博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
unittest数据驱动
阅读量:4978 次
发布时间:2019-06-12

本文共 3054 字,大约阅读时间需要 10 分钟。

所谓的数据驱动就是将数据单独存放,在写方法将数据读取,然后将读取的数据放在testcase里面。

当然如果这种testcase都是一样的,只有需要的数据不一样,也可以将testcase写成一个方法,把上面获取的数据作为参数传进方法里面!

 

下面是一个关于登陆的自动化测试,由于登录的步骤完全一样,就是每次登录时用的账号密码不一样,所以可以用数据驱动啊!

def login(username, password):    driver.find_element_by_id("idInput").send_keys(username)    driver.find_element_by_id("pwdInput").send_keys(password)    driver.find_element_by_id("loginBtn").click()if __name__ == '__main__':    login("zhangsan","123")    #...    #...    login("lisi","456")

当传zhangsan,程序就会用zhangsan登录,当传lisi,就会用lisi登录。

数据驱动的本质就是“测试数据”与“执行代码”做分离。至于,“测试数据”放哪儿都可以。

 

下面是csv文件的数据驱动

读取数据文件,并得到相应的数据,把这些数据用到具体的某个用例当中

from selenium import webdriverimport unittestimport csvcsvData = csv.reader(open('C:\\Users\\chenjia\\Desktop\\test.csv','r'))Data = []for i in csvData:  #获取csv中每一行的数据(每一行的数据都是一个列表)    print i        #打印每一行的数据(也就是打印每一行列表)    data= []    for j in i:    #获取每一行的每一个单元格的值(也就是遍历每一行的单元格的值)        data.append(j)    #获取每一个单元表格的值,由于每次循环j只能显示一个值,所以data也只能显示一个值    Data.append(data)    #所以再将data的每一个值都添加到Data里面print Dataprint Data[0][0]     #打印第一个小数列里面的第一个元素print Data[3][2]     #打印第4个小数列里面的第3个元素print Data[-1][-1]   #打印最后一个小数列里面的最后一个元素class loginTest(unittest.TestCase):    def setUp(self):        self.driver = webdriver.Chrome()        self.driver.get("http://xxx.login.page")    # 封装用户登录    def user_login(self, username, password):        self.driver.find_element_by_id("idInput").send_keys(username)        self.driver.find_element_by_id("pwdInput").send_keys(password)        self.driver.find_element_by_id("loginBtn").click()    def test_login1(self):        '''用户名、密码为空登录'''        username = Data[0][1]        password = Data[0][2]        self.user_login(username, password)        def test_login2(self):        '''用户名正确,密码为空'''        username = Data[1][1]        password = Data[1][2]        self.user_login(username, password)    def test_login3(self):        '''用户名为空,密码正确'''        username = Data[2][1]        password = Data[2][2]        self.user_login(username, password)    def test_login4(self):        '''用户名密码正确 '''        username = Data[3][1]        password = Data[3][2]        self.user_login(username, password)if __name__ == '__main__':    unittest.main()

 

下面一段代码是在unittest里面用python读取excel 数据

#此代码为获取excel表中的每一个cell单元格的值,并将每一行的值作为一个小列表,整个excel表就是由多行值(多行小列表)构成的一个大列表import xlrddata = xlrd.open_workbook('C:\Users\chenjia\Desktop\unittest.xlsx') # 打开xls文件table = data.sheets()[0]   # 打开第一张表nrows = table.nrows        # 获取表的行数ncols = table.ncols        # 获取表的列数Cell_List = []for i in range(1, nrows):    row_data = table.row_values(i)   #获取每一行的值    print row_data    cell_list = []         #建一个列表用于存放获取每一个cell表格的值    for l in range(ncols):        cell_data = row_data[l]     #获取每一个cell表格的值        print cell_data        cell_list.append(cell_data)  #获取每一个cell表格的值,由于每次循环cell_data只能显示一个值,所以cell_list只能显示一个值    Cell_List.append(cell_list)      #所以再将cell_list的每一个值都添加到Cell_List里面print "----------------------------------------------------------------------------------"print Cell_List

 

转载于:https://www.cnblogs.com/111testing/p/6491928.html

你可能感兴趣的文章
JavaWeb之JSON
查看>>
HOT SUMMER 每天都是不一样,积极的去感受生活 C#关闭IE相应的窗口 .
查看>>
optionMenu-普通菜单使用
查看>>
【MemSQL Start[c]UP 3.0 - Round 1 C】 Pie Rules
查看>>
Ognl中“%”、“#”、“$”详解
查看>>
我对应用软件——美团的看法
查看>>
struts2.x + Tiles2.x读取多个xml 配置文件
查看>>
表单校验之datatype
查看>>
python第六篇文件处理类型
查看>>
ubuntu16系统磁盘空间/dev/vda1占用满的问题
查看>>
grid网格布局
查看>>
JSP常用标签
查看>>
九涯的第一次
查看>>
处理器管理与进程调度
查看>>
向量非零元素个数_向量范数详解+代码实现
查看>>
java if 用法详解_Java编程中的条件判断之if语句的用法详解
查看>>
matlab sin函数 fft,matlab的fft函数的使用教程
查看>>
mysql adddate()函数
查看>>
mysql sin() 函数
查看>>
单片机复位电路
查看>>