在接口测试中,一个接口每每须要有多组数据进行测试,以验证接口的正确性。这样就涉及到一个问题,是否是须要编写多个测试用例来实现呢?好比一个登录接口,登录成功的一组数据、登录密码错误的一组数据、登录帐号错误的一组数据。那咱们要怎么操做呢?数据驱动就能够很好的解决该问题。只须要编写一个测试用例脚本,经过传入不一样的数据,返回不一样的测试结果。
python
python中实现数据驱动是经过引入ddt模块来实现的。没有安装的,直接安装改模块便可。api
import ddt微信
使用数据驱动时,须要在测试的模块上进行声明。在具体的测试方法上使用ddt.data()方法或者ddt.file_data()进行参数传递。app
ddt.data()默认将参数都传递给第一个参数,每一组数据执行一遍测试用例,以达到数据驱动的效果。若是传递多个参数时需要用到ddt.unpack 声明进行拆分。测试
案例以下:spa
import ddtimport unittestimport ReadExcel
testData =ReadExcel.ReadExcel.readExcel("E:\\study\\data\\test_ddt.xls", "Sheet1")class DDTtest(unittest.TestCase): @ddt.data([1,2],[3,4]) #数据参数 def test_A(self,a,b): print(a+b)
def test_B(self,a): print(a) def test_C(self,a): print(a)
@ddt.data(*testData) #读取Excel文件进行传递,这里必须是迭代器 def test_D(self, data): print(data) print("执行完成") return
if __name__=="__main__": unittest.main();
import xlrd#读取Excel的方法class ReadExcel(): def readExcel(fileName,SheetName="Sheet1"): data = xlrd.open_workbook(fileName) table = data.sheet_by_name(SheetName)
#获取总行数、总列数 nrows = table.nrows ncols = table.ncols if nrows > 1: #获取第一行的内容,列表格式 keys = table.row_values(0) #print(keys)
listApiData = [] #获取每一行的内容,列表格式 for col in range(1,nrows): values = table.row_values(col) # keys,values这两个列表一一对应来组合转换为字典 api_dict = dict(zip(keys, values)) #print(api_dict) listApiData.append(api_dict) return listApiData else: return None
if __name__ == '__main__': s = ReadExcel.readExcel("E:\\study\\data\\test_ddt.xls","Sheet1") print(s)
本文分享自微信公众号 - 软件测试道与术(UTesting)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。.net