Python接口自动化系列- python+unittest+ddt参数化7
一、ddt说明
一般进行接口测试时,每个接口的传参都不止一种情况,一般会考虑正向、逆向等多种组合。所以在测试一个接口时通常会编写多条case,而这些case除了传参不同外,其实并没什么区别。这个时候就可以利用ddt来管理测试数据,提高代码复用率。
四种模式:
1 2 3 4 5 6 7 | 第一步引入的装饰器@ddt; 导入数据的@data; 拆分数据的@unpack; 导入外部数据的@file_data |
二、使用案例
案例1:
1 2 3 4 5 6 7 8 9 10 11 12 13 | #一定要和单元测试框架一起用 import unittest,os from ddt import ddt,data,unpack,file_data '' 'NO.1单组元素' '' @ddt class Testwork(unittest.TestCase): @data(1,2,3) def test_01(self,value): #value用来接收data的数据 print(value) if __name__ == '__main__' : unittest.main() |
返回结果:
案例2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # 一定要和单元测试框架一起用 import unittest, os from ddt import ddt, data, unpack, file_data '' 'NO.2多组未分解元素' '' @ddt class Testwork(unittest.TestCase): @data((1, 2, 3), (4, 5, 6)) @unpack def test_01(self, value1,value2,value3): # value用来接收data的数据 print(value1,value2,value3) if __name__ == '__main__' : unittest.main() |
返回结果:
案例3:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # 一定要和单元测试框架一起用 import unittest, os from ddt import ddt, data, unpack, file_data # '''NO.3多组字典元素分解''' @ddt class Testwork1(unittest.TestCase): @data([{ 'name' : 'lili' , 'age' :12},{ 'sex' : 'male' , 'job' : 'teacher' }]) @unpack def test_01(self,a,b): print(a) print(b) if __name__ == '__main__' : unittest.main() |
返回结果:
三、unitest+ddt+excel参数实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | import unittest import requests import ddt import xlrd def get_data(file_name): a=[] #定义一个空的list book=xlrd.open_workbook(file_name) #打开一个excel文件 sheet=book.sheet_by_index(0) #选择第一个sheet页 for i in range(1,sheet.nrows): a.append(list(sheet.row_values(i,0,sheet.ncols))) #像a空列表添加list数据,0-到sheet.ncols列 return a result = get_data( './Parameterization.xlsx' ) token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjp7ImFjY291bnQiOiJ7XCJjbGllbnRcIjpcIjIxNTBkZGI5ZDEyNTgxODhcIixcInNpZFwiOlwiZ2phUXZmbVZydjhlZmdpNEQ0TXY0bEE2YUE4Vlh1RUNcIixcImFjY291bnRJZFwiOjE5NDY0LFwiZW1haWxcIjpcInVjcjE1MEAxNjMuY29tXCJ9In0sImlhdCI6MTY3MDIxMjUwNywiZXhwIjoxNjc1Mzk2NTA3fQ.WKmi0ZhwZgE4sE-jWM4tu7EMaoJbiHCCmSDLH6KBLDA" def diy_list(sku,goodsType): "" "【DIY】-case1获取自己的DIY列表" "" headers = { 'Authorization' : 'Bearer ' + token, 'clientId' : 'b1d157a38a6367be' , 'appversion' : '5.4' } params ={ "sku" :sku, "goodsType" : int (goodsType) } response = requests. get (f "https://xxx-app2.govee.com/appsku/v1/diys/diy-modes" , headers=headers, params = params , verify=False) print(response.text) return response @ddt.ddt class test_diy(unittest.TestCase): '' 'NO.1单组元素' '' @ddt.data(*result) @ddt.unpack # 进行参数化 def test_01(self, sku, goodsType): '' '获取当前设备的模块展示' '' result=diy_list(sku,goodsType) res=result.json() assert res[ 'status' ]==200 if __name__ == '__main__' : # 通过verbosity=2 查看详细内容 unittest.main(verbosity=2) |
返回结果:
参考文章:https://www.cnblogs.com/qican/p/13959243.html
本文来自博客园,作者:橘子偏爱橙子,转载请注明原文链接:https://www.cnblogs.com/xfbk/p/17033861.html
分类:
Python接口自动化系列
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律