接口自动化会用到数据驱动模式,也就是一个ddt模块
目录
1、环境准备
2、调用时标准格式
3、应用(结合excle来传值)
1、环境准备
首先,需要安装ddt模块
pip install ddt
2、调用时标准格式
在类下面如下写上:@ddt.ddt
在调用的方法下面需要写上:@ddt.data(需要传入的多组数据)
3、应用(结合excle来传值)
第一步:写一个excle取数据方法:
# coding:utf-8 import xlrd class ExcelUtil(): def __init__(self,exclePath,sheetName="sheet1"): self.data=xlrd.open_workbook(exclePath) 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 list(range(self.rowNum-1)): s={} #从第二行取对应value值 s['rowNum']=i+2 values=self.table.row_values(j) for x in list(range(self.colNum)): s[self.keys[x]]=values[x] r.append(s) j+=1 return r #返回的是excle的每一行的值 #调试一下,上面函数是否正确 if __name__ =="__main__": filepath ="D:\1.xlsx" sheetName="Sheet1" data=ExcelUtil(filepath,sheetName) print(data.dict_data())
第二步:写一个接口模块,一个case模块
第三步:在case模块中使用ddt模块、接口模块,来使用excle传入参数值
# coding:utf-8 import requests import unittest import ddt import readexcle1 import login01 #excle放在文件下,就可以直接只写文件名 d=readexcle1.ExcelUtil("D:\1.xlsx", sheetName="Sheet1") #带上模块名,不然会报错 data1 = d.dict_data() @ddt.ddt class Test(unittest.TestCase): def setUp(self): self.s = requests.session() #在这一步,就会取每一行的数据进行用例的执行 @ddt.data(*data1) def test_(self, A): #通过参数A,来取列表的每一行的每一个值 # print("测试用例数据:%s"%aaaa) user = A['user'] password = A['password'] q=login01.Login01() result =q.login01(user, password) # print(result) login_result = login01.is_login_sucess(result) # print("实际结果:%s" % login_result) # 实际结果 bool expect = A['expect'] # 取文件中的True和用例跑出来的True对比,做期望值 # print str(login_result) self.assertTrue(str(login_result) == expect) #实际结果为bool值,转成字符串与期望结果做对比 if __name__ == "__main__": unittest.main()