python selenium unittest关键字驱动_ALLEN老师自动化测试小课堂 | 关键字驱动测试KDT...

关键字驱动测试(Keyword driver testing)也被称为表格驱动测试或者基于动作字的测试,工作中经常遇到的KDT测试工具有很多,比如Selenium IDE、Katalon Recorder、UFT等。

关键字驱动的核心就是对测试用例(步骤)进行拆分:

a、测试步骤中的对象(Test Object)

b、测试对象执行的动作(Action)

c、测试对象需要的数据(Test Data)

以下面表格的测试用例,使用python+selenium+unittest完成关键字驱动测试:

1、完成基本动作(Action)的定义

#导入一些常用包

from selenium import webdriver

import xlrd

import time

global driver

#1、完成第一个action,打开浏览器:open_broswer

def open_broswer(browserName):

global driver

if browserName=="Chrome":

driver = webdriver.Chrome()

elif browserName == "firefox":

driver = webdriver.Firefox()

#2、打开指定url地址的方法:open_url

def open_url(url):

global driver

driver.get(url)

#3、定一个识别元素并能返回元素的方法

def get_element(type1,type_value):

global driver

if type1 == "XPATH":

element = driver.find_element_by_xpath(type_value)

elif type1 == "ID":

element = driver.find_element_by_id(type_value)

return element

#4、实现点击动作:click_button

def click_button(type1,type_value):

ele = get_element(type1,type_value)

ele.click()

#5、实现输入数据动作:input_str

def input_str(type1,type_value,value1):

ele = get_element(type1,type_value)

ele.send_keys(value1)

#6、实现时间等待动作:wait_time

def wait_time(value1):

time.sleep(int(value1))

#7、实现断言动作:assert_result

def assert_result(type1,type_value,value1):

ele = get_element(type1,type_value)

expectValue = ele.text

if expectValue==value1:

print("测试用例通过")

else:

print("测试用例不通过")

#8、关闭浏览器:close_broswer

def close_browser():

global driver

driver.quit()

2、完成测试用例的定义(步骤和数据)

#打开excel文件中的用例

dataa = xlrd.open_workbook(r"./kdt.xlsx")

table = dataa.sheets()[0]

for i in range(1,table.nrows):

stepNo = table.row_values(i)[0]

stepDes = table.row_values(i)[1]

actionN = table.row_values(i)[2]

type1 = table.row_values(i)[3]

type_value = table.row_values(i)[4]

value1 = table.row_values(i)[5]

if actionN =="open_broswer":

command = "%s('%s')"%(actionN,value1)

elif actionN == "open_url":

command = "%s('%s')"%(actionN,type_value)

elif actionN == "click_button":

command = "%s('%s','%s')"%(actionN,type1,type_value)

elif actionN == "input_str":

command = "%s('%s','%s','%s')"%(actionN,type1,type_value,value1)

elif actionN == "wait_time":

command = "%s('%s')"%(actionN,value1)

elif actionN == "assert_result":

command = "%s('%s','%s','%s')"%(actionN,type1,type_value,value1)

elif actionN == "close_browser":

command = "%s()"%(actionN)

# print(command)

eval(command)

3、转化为Unittest框架用例

from selenium import webdriver

import unittest

import xlrd

import time

global driver

#1、完成第一个action,打开浏览器:open_broswer

def open_broswer(browserName):

global driver

if browserName=="Chrome":

driver = webdriver.Chrome()

elif browserName == "firefox":

driver = webdriver.Firefox()

#2、打开指定url地址的方法:open_url

def open_url(url):

global driver

driver.get(url)

#3、定一个识别元素并能返回元素的方法

def get_element(type1,type_value):

global driver

if type1 == "XPATH":

element = driver.find_element_by_xpath(type_value)

elif type1 == "ID":

element = driver.find_element_by_id(type_value)

return element

#4、实现点击动作:click_button

def click_button(type1,type_value):

ele = get_element(type1,type_value)

ele.click()

#5、实现输入数据动作:input_str

def input_str(type1,type_value,value1):

ele = get_element(type1,type_value)

ele.send_keys(value1)

#6、实现时间等待动作:wait_time

def wait_time(value1):

time.sleep(int(value1))

#7、实现断言动作:assert_result

def assert_result(type1,type_value,value1):

ele = get_element(type1,type_value)

expectValue = ele.text

if expectValue==value1:

print("测试用例通过")

else:

print("测试用例不通过")

#8、关闭浏览器:close_broswer

def close_browser():

global driver

driver.quit()

class kdtExcel(unittest.TestCase):

def readExcel(self,filename):

#打开excel文件中的用例

dataa = xlrd.open_workbook(filename)

table = dataa.sheets()[0]

for i in range(1,table.nrows):

stepNo = table.row_values(i)[0]

stepDes = table.row_values(i)[1]

actionN = table.row_values(i)[2]

type1 = table.row_values(i)[3]

type_value = table.row_values(i)[4]

value1 = table.row_values(i)[5]

if actionN =="open_broswer":

command = "%s('%s')"%(actionN,value1)

elif actionN == "open_url":

command = "%s('%s')"%(actionN,type_value)

elif actionN == "click_button":

command = "%s('%s','%s')"%(actionN,type1,type_value)

elif actionN == "input_str":

command = "%s('%s','%s','%s')"%(actionN,type1,type_value,value1)

elif actionN == "wait_time":

command = "%s('%s')"%(actionN,value1)

elif actionN == "assert_result":

command = "%s('%s','%s','%s')"%(actionN,type1,type_value,value1)

elif actionN == "close_browser":

command = "%s()"%(actionN)

# print(command)

eval(command)

def test_cases(self):

self.readExcel(r"./kdt.xlsx")

if __name__ == '__main__':

unittest.main()

【原创文章 转载请标注此出处】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值