领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座! 天天时讯
“接口自动化测试是指通过编写代码或使用工具,模拟用户发送请求,验证接口是否符合设计规范和功能需求的过程。”
如何用 python +ddt+excel 实现接口自动化测试
接口自动化测试可以提高测试效率和质量,节省测试成本和时间,保证测试覆盖率和可维护性。
(资料图片)
让勇哥带你入门如何用 python +ddt+excel 实现接口自动化测试,请瞧如下内容:
一、准备工作
1. 安装 python 环境
python 是一种简洁、优雅、易学的编程语言,它有丰富的第三方库和社区支持,非常适合用来进行接口自动化测试。安装 python 的3.0以上的版本),并配置好环境变量,以便在命令行中使用 python 命令。
2. 安装相关库
为了进行接口自动化测试,我们需要安装以下几个库:
requests:用来发送 HTTP 请求,支持各种方法、参数、头部、身份验证等。
xlrd:用来读取 excel 文件中的数据,支持 xls 和 xlsx 格式。
openpyxl:用来写入 excel 文件中的数据,支持 xlsx 格式。
ddt:用来实现数据驱动测试,可以从 excel 文件中读取多组数据,并生成多个测试用例。
unittest:用来编写和执行测试用例,支持断言、前置后置条件、测试套件等。
HTMLTestRunner_api:用来生成 HTML 格式的测试报告,支持图表、日志、截图等。
我们可以使用 pip 命令来安装这些库,例如:
pip install requests
二、设计测试
1. 编写 excel 文件
我们需要在 excel 文件中填写接口的相关信息,包括:
接口名称
请求地址
请求方法
请求参数
预期结果
例如:
我们可以将这个 excel 文件保存为 test_data.xlsx,并放在项目的 test_datas 目录下。
2. 封装 excel 操作
为了方便地读取和写入 excel 文件中的数据,我们需要封装一些 excel 操作的函数,例如:
打开表单
获取表头
获取所有数据
写入数据
我们可以将这些函数定义在一个类中,并保存为 excel_handler.py,并放在项目的 Lib 目录下。具体代码如下:
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 请求
为了方便地发送 HTTP 请求,我们需要封装一些 requests 请求的函数,例如:
初始化 session
发送请求
关闭 session
我们可以将这些函数定义在一个类中,并保存为 requests_handler.py,并放在项目的 Lib 目录下。具体代码如下:
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. 编写测试用例
我们需要使用 unittest 和 ddt 来编写和执行测试用例,具体步骤如下:
导入相关库和模块
定义一个测试类,继承 unittest.TestCase
定义一个类方法,用来初始化 session 和读取 excel 文件中的数据
使用 @ddt.data 装饰器,传入 excel 文件中的数据
定义一个测试方法,用来发送请求,并断言响应结果是否符合预期
我们可以将这些代码保存为 test_api.py,并放在项目的 test_cases 目录下。具体代码如下:
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. 生成测试报告
我们需要使用 HTMLTestRunner_api 来生成 HTML 格式的测试报告,具体步骤如下:
导入相关库和模块
定义一个测试套件,添加测试用例
定义一个测试报告的文件名和路径
定义一个测试运行器,传入测试报告的文件对象和相关参数
使用测试运行器来运行测试套件
我们可以将这些代码保存为 run.py,并放在项目的根目录下。具体代码如下:
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)
四、查看结果
运行 run.py 文件后,我们可以在 reports 目录下看到生成的 test_report.html 文件,打开它,我们可以看到以下内容:
我们可以看到,共有 11 个测试用例,通过 6 个,失败 5 个。我们还可以看到每个测试用例的详细信息,包括用例名称、请求地址、请求参数、预期结果、实际结果等。我们还可以看到一些图表、日志、截图等。
这样,我们就完成了用 python +ddt+excel 实现接口自动化测试的过程。
总结
以上就是勇哥今天为各位小伙伴准备的内容,如果你想了解更多关于Python自动化测试的知识和技巧,欢迎关注:
我的公众号:百态测试
博客(奈非天的主页 - 博客园 (cnblogs.com))
我会不定期地分享更多的精彩内容。感谢你的阅读和支持!
本文来自博客园,作者:奈非天,转载请注明原文链接:https://www.cnblogs.com/Nephalem-262667641/p/17460169.html
标签:
-
2022-05-23 16:13:32
上海奉贤等区开展常态化防疫压力测试 有序开放公交、公园、公共服务场所、公共街区商区<
本报上海5月21日电 (记者刘士安、曹玲娟)上海正在奉贤等区开展常态化防疫压力测试。在21日召开的上海市疫情防控工作新闻发布会上,奉
-
2022-05-23 16:13:32
“抗疫 宅家云课堂”,吸引沪上老同志观看50万人次<
由上海市委老干部局主办,上海市老干部大学、市科技助老服务中心承办的“抗疫 宅家云课堂”系列直播讲座自4月12日启动以来,深受老同
-
2022-05-23 16:13:32
“代跑腿”买药、开通绿色通道 丰台为管控区居民提供便捷医疗服务<
“真是太感谢了,解决了我的燃眉之急!”家住假日万恒社区的杨女士对前来送药的居委会工作人员说。 自5月17日6时起,丰台区对青塔街...
-
2022-05-23 16:13:32
上海嘉定:儿童计划免疫接种全部恢复,实行预约制<
在5月22日召开的上海市新冠肺炎疫情防控新闻发布会上,嘉定区副区长王浩介绍,从4月28日开始,嘉定在防范区逐步有序恢复老年人疫苗接种
-
2022-05-23 16:13:32
乡村振兴看新疆 | 种下红樱桃 结出“致富果”<
央广网阿图什5月22日消息(记者 罗成 通讯员 杨林)乡村振兴靠产业,产业发展靠特色。新疆阿图什市阿扎克镇麦依村积极引导农民因地制
-
2023-06-08 04:57:17
领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座! 天天时讯
“& 160;接口自动化测试是指通过编写代码或使用工具,模拟用户发送请求
-
2023-06-08 03:37:54
商品期货收盘多数下跌,甲醇跌3%,纸浆、尿素、纯碱跌超2% 全球实时
国内商品期货收盘多数下跌,甲醇跌超3%,纯碱、尿素等跌超2%,硅铁、PV
-
2023-06-08 03:42:03
“既独具特色,又可与世界对话”:摩尔多瓦前总统彼得·鲁钦斯基来访,盛赞郎酒庄园之美
有朋自远方来,不亦乐乎:近日,赤水河左岸郎酒庄园首次迎来国家元首级
-
2023-06-08 02:47:05
澳第一大行澳大利亚联邦银行禁止员工使用ChatGPT 采用自有AI系统
【澳第一大行澳大利亚联邦银行禁止员工使用ChatGPT采用自有AI系统】澳
-
2023-06-08 02:21:49
海关总署:前5个月民营企业进出口总额同比增长13.1%
据海关统计,今年前5个月,我国有进出口实绩的民营企业43 9万家,同比
-
2023-06-08 01:31:33
国产最强量子计算机“悟空”7月有望发布:传统芯片千倍性能提升 ! 环球即时看
量子计算机是一种使用量子力学的计算机,它能比普通计算机更高效地执行
-
2023-06-08 01:28:31
一杯两用:佳适高颜值大容量大肚杯1300ML 19.9元
一杯两用:佳适高颜值大容量大肚杯1300ML19 9元
-
2023-06-08 01:09:53
环球观察:淘宝领的红包在哪里看(淘宝领的红包在哪里)
你们好,最近小时空发现有诸多的对于淘宝领的红包在哪里看,淘宝领的红
-
2023-06-08 00:37:12
【擦亮“十有临夏”底色】临夏摄影|天天讯息
临夏摄影炳灵风光鲁肸摄芍药花开王援朝摄国色天香胡兆蓉摄绿色音符董永
-
2023-06-08 00:06:17
刚柔并济 软硬兼施_软硬兼施的意思-全球热文
想必现在有很多小伙伴对于软硬兼施的意思方面的知识都比较想要了解,那
-
2023-06-07 23:51:33
当前头条:涟源市市场监督管理局:247项认证赋能企业高质量发展
近年来,涟源市共有86家企业获得强制性产品、食品农产品、管理体系等24
-
2023-06-07 22:44:34
创业板指跌1.61% 新能源领跌、旅游与传媒股走强 热资讯
【收盘播报】沪指涨0 08%,深证成指跌0 6%,创业板指跌1 61%。成交额超
-
2023-06-07 21:52:22
信息:每经操盘必知(下午版)丨创业板指跌1.61% AI概念股逆势大涨;长春高新回应股价跌停;中国消费者协会:警惕培训班退费骗局
每经操盘必知(下午版)丨创业板指跌1 61%AI概念股逆势大涨;长春高新
-
2023-06-07 21:08:34
动态:明朝皇帝朱厚熜怎么读_朱厚熜读cong还是zong
想必现在有很多小伙伴对于朱厚熜读cong还是zong方面的知识都比较想要了
-
2023-06-07 20:58:49
每日速讯:昔日“光脚走”转场模式变为机械化牛羊转场 牧民更轻松
央视网消息:每年的5月底6月初,随着天气渐暖,位于萨吾尔山脚下的新疆
-
2023-06-07 21:05:45
蜂巢能源出海有方,计划投资3000万美元在泰国建设PACK工厂 当前观察
蜂巢能源出海有方,计划投资3000万美元在泰国建设PACK工厂蜂巢能源计划
-
2023-06-07 20:11:44
【独家焦点】涟源市市场监督管理局:247项认证赋能企业高质量发展
近年来,涟源市共有86家企业获得强制性产品、食品农产品、管理体系等24
-
2023-06-07 19:28:08
机构:高学历房产经纪人占比提升 40岁以下经纪人占比八成
【机构:高学历房产经纪人占比提升40岁以下经纪人占比八成】6月6日,58
-
2023-06-07 18:36:18
悦达起亚入选“私家车新车上牌免查验试点企业”
近日,买车网Buycar获悉,公安部宣布继续扩大私家车新车上牌免查验试点
-
2023-06-07 18:28:23
当前时讯:广东 2023 年夏季高考首场考试顺利进行,70 万考生奔赴考场
文 羊城晚报全媒体记者孙唯6月7日,广东省2023年普通高考首场语文科目
-
2023-06-07 18:26:54
全球新资讯:我国部署实施2023年公海自主休渔措施
人民网北京6月7日电(记者王仁宏)日前,农业农村部印发通知,部署实施
-
2023-06-07 17:44:20
金至尊今天黄金价格多少一克(2023年6月7日)|快讯
金至尊今天黄金价格多少一克(2023年6月7日)
-
2023-06-07 17:40:31
华富数字经济混合延长募集期|聚焦
华富数字经济混合延长募集期
-
2023-06-07 17:29:45
淘宝的保证金可以退吗_淘宝保证金可以退吗
1、首先必须明确,淘宝押金是可以退的。只要你按照正规流程开店,不违
-
2023-06-07 16:58:38
全球热资讯!俄罗斯科学家利用活细胞实现人体组织3D打印
6月7日获悉,俄罗斯谢切诺夫莫斯科第一国立医科大学(MSMU)向卫星通讯
-
2023-06-07 16:26:03
广东韶关首款区域公共文创伴手礼“新韶九章”发布
6月6日,广东韶关市浈江区召开“新韶九章”品牌发布会。该品牌的发布填
-
2023-06-07 16:30:32
akb0048第二季13集片尾曲_akb0048第二季 滚动
1、你说的这个人应该是nagisaakb0048里的前田敦子CV是岩田华怜她是NONA
-
2023-06-07 16:03:50
环球资讯:欧央行多名官员发表鹰派言论 黄金短期有调整需求
周三(6月7日)本交易日现货黄金日内维持震荡,今日开盘报1962 99美元 盎
-
2023-06-07 14:36:23
165 84a是什么尺码衣长多少_165 84a是什么尺码
1、楼上的别误导人84A指的是领口的尺寸。本文分享完毕,希望对大家有所
-
2023-06-07 13:51:33
快消息!鄂城区杜山小学深耕劳动教育,师生共享丰收喜悦
鄂城区杜山小学深耕劳动教育,师生共享丰收喜悦---鄂城区杜山小学深耕
-
领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座! 天天时讯
2023-06-08 04:57:17 -
商品期货收盘多数下跌,甲醇跌3%,纸浆、尿素、纯碱跌超2% 全球实时
2023-06-08 03:37:54 -
“既独具特色,又可与世界对话”:摩尔多瓦前总统彼得·鲁钦斯基来访,盛赞郎酒庄园之美
2023-06-08 03:42:03 -
澳第一大行澳大利亚联邦银行禁止员工使用ChatGPT 采用自有AI系统
2023-06-08 02:47:05 -
海关总署:前5个月民营企业进出口总额同比增长13.1%
2023-06-08 02:21:49 -
国产最强量子计算机“悟空”7月有望发布:传统芯片千倍性能提升 ! 环球即时看
2023-06-08 01:31:33 -
一杯两用:佳适高颜值大容量大肚杯1300ML 19.9元
2023-06-08 01:28:31