领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座! 环球新要闻
2023-06-07 22:57:53 来源:博客园
“接口自动化测试是指通过编写代码或使用工具,模拟用户发送请求,验证接口是否符合设计规范和功能需求的过程。” (资料图片) 接口自动化测试可以提高测试效率和质量,节省测试成本和时间,保证测试覆盖率和可维护性。 让勇哥带你入门如何用 python +ddt+excel 实现接口自动化测试,请瞧如下内容: python 是一种简洁、优雅、易学的编程语言,它有丰富的第三方库和社区支持,非常适合用来进行接口自动化测试。安装 python 的3.0以上的版本),并配置好环境变量,以便在命令行中使用 python 命令。 为了进行接口自动化测试,我们需要安装以下几个库: requests:用来发送 HTTP 请求,支持各种方法、参数、头部、身份验证等。 xlrd:用来读取 excel 文件中的数据,支持 xls 和 xlsx 格式。 openpyxl:用来写入 excel 文件中的数据,支持 xlsx 格式。 ddt:用来实现数据驱动测试,可以从 excel 文件中读取多组数据,并生成多个测试用例。 unittest:用来编写和执行测试用例,支持断言、前置后置条件、测试套件等。 HTMLTestRunner_api:用来生成 HTML 格式的测试报告,支持图表、日志、截图等。 我们可以使用 pip 命令来安装这些库,例如: 我们需要在 excel 文件中填写接口的相关信息,包括: 接口名称 请求地址 请求方法 请求参数 预期结果 例如: 我们可以将这个 excel 文件保存为 test_data.xlsx,并放在项目的 test_datas 目录下。 为了方便地读取和写入 excel 文件中的数据,我们需要封装一些 excel 操作的函数,例如: 打开表单 获取表头 获取所有数据 写入数据 我们可以将这些函数定义在一个类中,并保存为 excel_handler.py,并放在项目的 Lib 目录下。具体代码如下: 为了方便地发送 HTTP 请求,我们需要封装一些 requests 请求的函数,例如: 初始化 session 发送请求 关闭 session 我们可以将这些函数定义在一个类中,并保存为 requests_handler.py,并放在项目的 Lib 目录下。具体代码如下: 我们需要使用 unittest 和 ddt 来编写和执行测试用例,具体步骤如下: 导入相关库和模块 定义一个测试类,继承 unittest.TestCase 定义一个类方法,用来初始化 session 和读取 excel 文件中的数据 使用 @ddt.data 装饰器,传入 excel 文件中的数据 定义一个测试方法,用来发送请求,并断言响应结果是否符合预期 我们可以将这些代码保存为 test_api.py,并放在项目的 test_cases 目录下。具体代码如下: 我们需要使用 HTMLTestRunner_api 来生成 HTML 格式的测试报告,具体步骤如下: 导入相关库和模块 定义一个测试套件,添加测试用例 定义一个测试报告的文件名和路径 定义一个测试运行器,传入测试报告的文件对象和相关参数 使用测试运行器来运行测试套件 我们可以将这些代码保存为 run.py,并放在项目的根目录下。具体代码如下: 运行 run.py 文件后,我们可以在 reports 目录下看到生成的 test_report.html 文件,打开它,我们可以看到以下内容: 我们可以看到,共有 11 个测试用例,通过 6 个,失败 5 个。我们还可以看到每个测试用例的详细信息,包括用例名称、请求地址、请求参数、预期结果、实际结果等。我们还可以看到一些图表、日志、截图等。 这样,我们就完成了用 python +ddt+excel 实现接口自动化测试的过程。 以上就是勇哥今天为各位小伙伴准备的内容,如果你想了解更多关于Python自动化测试的知识和技巧,欢迎关注: 我的公众号:百态测试 博客(奈非天的主页 - 博客园 (cnblogs.com)) 我会不定期地分享更多的精彩内容。感谢你的阅读和支持! 本文来自博客园,作者:奈非天,转载请注明原文链接:https://www.cnblogs.com/Nephalem-262667641/p/17460169.html如何用 python +ddt+excel 实现接口自动化测试
一、准备工作
1. 安装 python 环境
2. 安装相关库
pip install requests
二、设计测试
1. 编写 excel 文件
2. 封装 excel 操作
from openpyxl import load_workbookfrom openpyxl.worksheet.worksheet import Worksheetclass ExcelHandler(): """操作Excel""" def __init__(self, file): """初始化函数""" self.file = file def open_sheet(self, sheet_name) -> Worksheet: """打开表单""" wb = load_workbook(self.file) sheet = wb[sheet_name] return sheet def read_rows(self,sheet_name): """读取除表头外所有数据(除第一行外的所有数据)""" sheet = self.open_sheet(sheet_name) rows = list(sheet.rows)[1:] data = [] for row in rows: row_data = [] for cell in row: row_data.append(cell.value) data.append(row_data) return data def read_key_value(self,sheet_name): """获取所有数据,将表头与内容结合整...."""... return data
3. 封装 requests 请求
import requestsclass HTTPHandler: # 初始化 def __init__(self): self.session = requests.Session() # 定义一个方法,接收访问http请求的方式 def visit(self, url, method, params=None, data=None, json=None, **kwargs): res = self.session.request(method, url, params=params, data=data, json=json, **kwargs) try: return res.json() except ValueError: print("return not json") # 关闭session会话 def close_session(self): self.session.close()
三、执行测试
1. 编写测试用例
from Lib.excel_handler import ExcelHandlerfrom Lib.requests_handler import HTTPHandlerimport requestsimport ddtimport unittestdata = ExcelHandler("test_datas/test_data.xlsx").read_key_value("Sheet1")@ddt.ddtclass TestAPI(unittest.TestCase): @classmethod def setUpClass(cls): cls.s = HTTPHandler() @ddt.data(*data) def test_api(self,params): print("params:%s" % params) case_name = params.get("接口名称") url = params.get("请求地址") args = eval(params.get("请求参数")) if isinstance(params.get("请求参数"), str) else params.get("请求参数") method = params.get("请求方法") expct_res1 = params.get("预期结果") # 发起请求,获取返回数据 result = self.s.visit(url, method, params=args) # 分析返回数据 response_data = result["name"] # 断言响应结果是否符合预期 self.assertEqual(expct_res1, response_data) @classmethod def tearDownClass(cls): cls.s.close_session()
2. 生成测试报告
import unittestfrom HTMLTestRunner_api import HTMLTestRunnerfrom test_cases.test_api import TestAPI# 定义一个测试套件suite = unittest.TestSuite()# 添加测试用例suite.addTest(unittest.makeSuite(TestAPI))# 定义一个测试报告的文件名和路径report_file = "reports/test_report.html"# 定义一个测试运行器,传入测试报告的文件对象和相关参数with open(report_file, "wb") as f: runner = HTMLTestRunner(f, title="接口自动化测试报告", description="用例执行情况") # 使用测试运行器来运行测试套件 runner.run(suite)
四、查看结果
总结
标签:
相关阅读
精彩推荐
- 领导看了给你加薪!python +ddt+excel 一2023-06-07
- 天天快看:3辆全新特斯拉超跑竟被遗弃中国2023-06-07
- 步OPPO后尘,vivo暂停德国市场销售 竟然都2023-06-07
- 加拿大央行宣布加息25个基点2023-06-07
- 俄国防部:乌方破坏陶里亚蒂-敖德萨液氨管2023-06-07
- 每日关注!远赴非洲锁定锂矿供应后 协鑫能2023-06-07
- 特写:豫北小麦晾晒“图景” 村庄街道满2023-06-07
- 【全球快播报】M2芯片搭载 苹果全新15英寸2023-06-07
- 高考作文题曝光:比亚迪成功“预测”引发热2023-06-07
- 欠款证明是否就等于欠条?2023-06-07
- 时讯:合肥一小区为考上985、211家庭免一年2023-06-07
- 梅园好时光2023-06-07
- *ST金山(600396)6月7日主力资金净买入3392023-06-07
- 国网天津滨海公司:全力保障高考电力可靠供2023-06-07
- 可能造成一定损失!北京2区发布冰雹黄色预2023-06-07
- 3天假期后要连上6天班!端午假期首日火车票2023-06-07
- 热议:共和县气象台发布雷电黄色预警信号【2023-06-07
- 环球快报:关注2023高考|渝北警方开出首张2023-06-07
- 天津市2023年“文化和自然遗产日”非遗系列2023-06-07
- 【世界播资讯】面对GPT,教育也到了转变之时2023-06-07
- 当前热讯:愿做生态文明追梦人 ——记全国2023-06-07
- 5月全国城市轨道交通客运量24.9亿人次2023-06-07
- 美媒:乌克兰密谋袭击“北溪” 且美国提前2023-06-07
- 都江堰市奎光小学迎接综合督导评估检查_环2023-06-07
- 世界速读:@高考考生 多地考点启用智能安2023-06-07
- 贵研铂业: 贵研铂业关于为子公司担保进展2023-06-07
- 天天看点:天键股份: 首次公开发行股票并2023-06-07
- 罗欣药业: 关于控股股东及其一致行动人权2023-06-07
- ST实达: 福建实达集团股份有限公司关于发2023-06-07
- 华银电力: 大唐华银电力股份有限公司关于2023-06-07