python_自动化测试用例参数化
参数化有三种,代码驱动,数据驱动,关键字驱动
代码驱动,测试数据写在代码中 如下:
import requests,json import unittest import BeautifulReport fido_url = 'http://192.168.6.162:8080/uaf/reg/receive' '''代码驱动,代码实现做参数化的例子''' reg_receive_data1 = { "context": { "appID":"1103", "transNo":"1234567890", "userName":"mh", "transType":"00", "authType":"01", "opType":"00", "devices":{"deviceName": "HUA WEI", "deviceType": "iPhone 7", "deviceID": "0987654321"} } } reg_receive_data2 = { "context": { "appID":"", "transNo":"1234567890", "userName":"mh", "transType":"00", "authType":"01", "opType":"00", "devices":{"deviceName": "HUA WEI", "deviceType": "iPhone 7", "deviceID": "0987654321"} } } headers = { "Connection": "keep-alive", "Content-Type": "application/json", "Content-Length": "369", "Host": "192.168.6.162:8080", "User-Agent": "Apache-HttpClient/4.2.6 (java 1.5)" } def fido_reg(url,data,headers): r = requests.post(url=url,data=json.dumps(data),headers=headers).json() return r print(fido_reg(fido_url,reg_receive_data1,headers))#正常的返回 class Reg_receive(unittest.TestCase): def test(self): '''请求正常''' result = fido_reg(fido_url,reg_receive_data1,headers) self.assertEqual(1200,result.get('statusCode')) self.assertEqual('OK',result.get('description')) def test_02(self): '''appid为空''' result = fido_reg(fido_url,reg_receive_data2,headers) self.assertEqual(1401,result.get('statusCode')) self.assertEqual('Parameter- appID is EMPTY',result.get('description')) bf = BeautifulReport.BeautifulReport(unittest.makeSuite(Reg_receive)) bf.report(filename='测试报告1',description='接口测试报告')
数据驱动,代码读取excel,或txt
import xlrd import requests import unittest import BeautifulReport as bf import time import parameterized import json path = 'testcase_adapter.xlsx'#定义测试用例名字 testreport = time.strftime('%Y%m%d',time.localtime())#定义测试报告名字 class Op_excel: def r_excel(self,path): r_workbook = xlrd.open_workbook(path) r_sheet = r_workbook.sheets()[0] return r_sheet,r_workbook #读excel def get_nrows(self,r_sheet): nrows = r_sheet.nrows return nrows e = Op_excel()#实例化一个操作excel的类的对象 newsheet = e.r_excel(path)[0]#对象调用类的操作读excel方法返回操作的sheet给newsheet newnrows = e.get_nrows(newsheet)#对象调用类返回行数nrow给newrows testdata = [] for i in range(1,newnrows):#循环读取excel中的测试用例,把用例加到testdata中生成二维数组 testdata.append(newsheet.row_values(i)) def reg_receive(url,data,headers):#定义发送的post请求 r = requests.post(url=url,data=json.dumps(data),headers=headers).json() return r class Test_case(unittest.TestCase): @classmethod #类函数,执行测试用例开始前执行 def setUpClass(cls): print('接口测试开始') @classmethod #类函数,执行测试用例结束后候执行 def tearDownClass(cls): print('接口测试结束') @parameterized.parameterized.expand(testdata)#testdata是存的excel中的测试case def test_reg_receive(self,url,data,headers,expect,desc): '''测试用例''' self._testMethodName=desc#desc是对用例的描述 result = reg_receive(url,json.loads(data),json.loads(headers)) statuscode = result['statusCode']#返回状态码 self.assertEqual(int(expect),statuscode)#与测试用例中的状态码进行比对 # unittest.main() bf = bf.BeautifulReport(unittest.makeSuite(Test_case)) bf.report(filename=testreport,description='接口测试报告')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理