Python 接口自动化测试之数据驱动(DDT)

​      在接口测试中,一个接口往往需要有多组数据进行测试,以验证接口的正确性。这样就涉及到一个问题,是不是需要编写多个测试用例来实现呢?比如一个登陆接口,登陆成功的一组数据、登陆密码错误的一组数据、登陆账号错误的一组数据。那我们要怎么操作呢?数据驱动就可以很好的解决该问题。只需要编写一个测试用例脚本,通过传入不同的数据,返回不同的测试结果。

     python中实现数据驱动是通过引入ddt模块来实现的。没有安装的,直接安装改模块即可。

   import ddt

使用数据驱动时,需要在测试的模块上进行声明。在具体的测试方法上使用ddt.data()方法或者ddt.file_data()进行参数传递。

ddt.data()默认将参数都传递给第一个参数,每一组数据执行一遍测试用例,以达到数据驱动的效果。如果传递多个参数时需要用到ddt.unpack 声明进行拆分。

案例如下:

import ddtimport unittestimport ReadExceltestData =ReadExcel.ReadExcel.readExcel("E:\\study\\data\\test_ddt.xls", "Sheet1")@ddt.ddt   #声明使用数据驱动class DDTtest(unittest.TestCase):    @ddt.data([1,2],[3,4])   #数据参数    @ddt.unpack  #拆分参数    def test_A(self,a,b):        print(a+b)    @ddt.data({"a","b"})    def test_B(self,a):        print(a)            @ddt.data([1,2])    def test_C(self,a):        print(a)    @ddt.data(*testData)  #读取Excel文件进行传递,这里必须是迭代器    def test_D(self, data):        print(data)        print("执行完成")        returnif __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 Noneif __name__ == '__main__':    s = ReadExcel.readExcel("E:\\study\\data\\test_ddt.xls","Sheet1")    print(s)

执行结果如下:

Python 接口自动化测试之数据驱动(DDT)_第1张图片

-------------------------------------最后---------------------------------

 更多软件测试相关内容请关注“软件测试道与术”公众号或扫描下方二维码

Python 接口自动化测试之数据驱动(DDT)_第2张图片

你可能感兴趣的:(python+unittest,软件测试,python)