Python+Selenium 六:ddt数据驱动
1、封装方法:读取Excel数据
# coding:utf-8
import xlrd
class ExcelUtil():
def __init__(self, excelPath, sheetName):
#def __init__(self, excelPath, sheetName):
self.data = xlrd.open_workbook(excelPath)
self.table = self.data.sheet_by_name(sheetName)
# 获取第一行作为key值
self.keys = self.table.row_values(0)
# 获取总行数
self.rowNum = self.table.nrows
# 获取总列数
self.colNum = self.table.ncols
def dict_data(self):
if self.rowNum <= 1:
print("总行数小于1")
else:
r = []
j=1
for i in range(self.rowNum-1):
s = {}
# 从第二行取对应values值
values = self.table.row_values(j)
for x in range(self.colNum):
s[self.keys[x]] = values[x]
r.append(s)
j+=1
return r
if __name__ == "__main__":
filepath = "E:\\testdata.xlsx"
sheetName = "登录"
data = ExcelUtil(filepath, sheetName)
print(data.dict_data())
2、读取mysql数据库
搭建个数据库,测试数据放在数据库里面,导入第三方库pymysql,进行二次封装
import unittest, ddt, urllib3
from interfaces.Process import login
from common.MySQL import MysqlUtil
urllib3.disable_warnings()
# 拿测试数据
datas = MysqlUtil("SELECT explanation, userName, password, expect FROM Login").mysql_getrows()
# print(datas)
@ddt.ddt
class LogIn(unittest.TestCase):
''' 登录测试 '''
@ddt.data(*datas)
def test_login(self, data):
''' 测试用例 '''
self.user = data[1]
print(f'\n用户名:{self.user}')
self.password = data[2]
print(f'\n密码:{self.user}')
loginResult = login(self.user, self.password)[0]
print(f'\n预期结果: {data[3]} \n执行结果: {loginResult}')
self.assertEqual(loginResult, data[3])
if __name__=='__main__':
unittest.main()
参考大佬博客1:https://www.cnblogs.com/cnkemi/p/8964146.html
参考大佬博客2:https://www.cnblogs.com/zhongyehai/p/9560785.html
参考B站视频:https://www.bilibili.com/video/BV1kb4y16766?p=8

浙公网安备 33010602011771号