天天快讯:领导看了给你加薪!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 data3. 封装 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-02-07 14:57:45
奇迹!绝杀!女足亚洲杯逆转夺冠!<
刚刚,中国女足上演逆转绝杀奇迹!她们在亚洲杯决赛中3:2力克韩国队,时隔16年再夺亚洲杯冠军!
-
2022-02-07 14:57:45
中国政府与阿根廷共和国政府签署共建“一带一路”谅解备忘录<
新华社北京2月6日电(记者安蓓)国家发展改革委6日称,国家发展改革委主任何立峰与阿根廷外交、国际贸易和宗教事
-
2022-02-07 14:57:43
中华人民共和国和阿根廷共和国关于深化中阿全面战略伙伴关系的联合声明(全文)<
新华社北京2月6日电中华人民共和国和阿根廷共和国关于深化中阿全面战略伙伴关系的联合声明一、应中方邀请,阿根廷
-
2022-02-07 14:57:40
春节假期国内旅游出游2.51亿人次<
春节遇冬奥,旅游年味浓。根据文化和旅游部数据中心测算,2022年春节假期7天,全国国内旅游出游2 51亿人次,同比
-
2022-02-07 14:57:40
中吉签署关于经典著作互译出版的备忘录 开启两国人文交流互鉴新阶段<
新华社北京2月6日电(记者史竞男)国家主席习近平6日会见来华出席北京2022年冬奥会开幕式的吉尔吉斯斯坦总统扎帕
-
2023-06-07 17:46:40
天天快讯:领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座!
“& 160;接口自动化测试是指通过编写代码或使用工具,模拟用户发送请求
-
2023-06-07 17:37:48
广州海事“船员就医专线”入选广东自贸试验区改革创新经验 全球速看
6月3日,记者从广州海事局获悉,广东省人民政府发布中国(广东)自由贸
-
2023-06-07 17:17:41
关于听闻的文案
闻的文案1、愿为西南风,长逝入君怀。2、智者不入爱河,患者为情所困。
-
2023-06-07 16:07:59
2023高考数学开考 考生沉着进入考场
6月7日下午,高考数学科目即将拉开帷幕。西安市第三中学考点外,不少考
-
2023-06-07 16:08:01
甘肃定西临洮就业困难补贴2023年还有吗?今年如何办理?|全球滚动
甘肃定西临洮就业困难补贴2023年还有吗?今年如何办理?大学毕业生申请
-
2023-06-07 15:34:30
精彩看点:橘右京百科_橘佐久夜
1、已尽力。2、只找到这两张。本文到此分享完毕,希望对大家有所帮助。
-
2023-06-07 14:43:23
全球看热讯:东方铁塔:中标9129.78万元国家电网采购项目
东方铁塔6月7日公告,6月6日,国家电网公司电子商务平台公布了《国家电
-
2023-06-07 14:29:10
讴歌ZDX配置曝光 将与Google进行深度合作
日前,有海外媒体曝光了讴歌ZDX的车机配置信息,新车将与会与Google进
-
2023-06-07 14:19:09
仕净科技:6月6日融资净买入715.65万元,连续3日累计净买入1360.56万元
6月6日,仕净科技(301030)融资买入1566 38万元,融资偿还850 72万元
-
2023-06-07 14:06:01
南阳市唐河县:登记窗口“向前移” 服务群众“零距离” 新动态
“真是太方便了,想办个小餐馆,没想到来了一趟村委就把营业执照拿到手
-
2023-06-07 13:02:55
全球快看:沪指微幅高开 银行板块持续反弹
中新经纬6月7日电7日,A股三大股指开盘分化,上证指数涨0 07%,深证成
-
2023-06-07 13:10:50
竞逐储能赛道 宁德时代子公司落户珠海高新区
6月6日下午,以“高新驱动储能未来”为主题的2023年储能产业专场论坛暨
-
2023-06-07 12:23:18
新房开荒保洁怎么做
房子装修完以后,房间里会积攒很多灰尘。所以搬进去之前需要先给房子
-
2023-06-07 10:47:46
晶科能源于合肥投资新设光伏材料公司 注册资本1亿元
企查查APP显示,近日,合肥市晶科光伏材料有限公司成立,法定代表人为
-
2023-06-07 09:22:55
预计Vision Pro表现将面临阻力 D.A. Davidson下调苹果(AAPL.US)评级至“中性”
投行D A Davidson发布研报,将苹果(AAPL US)评级从“买入”下调为“中
-
2023-06-07 08:47:55
香港怎么去澳门最快_香港怎么去澳门|世界微动态
1、建议你先飞来深圳,深圳有地铁坐了,深圳机场→深圳火车站,全程一
-
2023-06-07 07:58:09
环球要闻:小小微心愿,传递大温暖——公安县埠河小学教联体关爱留守儿童主题活动
小小微心愿,传递大温暖——公安县埠河小学教联体关爱留守儿童主题活动
-
2023-06-07 07:26:04
全球热资讯!贵州省安顺市2023-06-04 15:22发布雷电黄色预警
音频解说一、贵州省安顺市天气预报1、镇宁县气象台2023年06月04日15时2
-
2023-06-07 06:42:55
要你命三千是什么梗 要你命3000什么意思
想必现在有很多小伙伴对于要你命三千是什么梗(要你命3000什么意思)方
-
2023-06-07 05:59:34
首艘国产大型邮轮出坞,打造船舶工业高质量发展“新样本”
6日,在东海之滨的黄金岸线上,一艘白色涂装、流线型船体、身系“敦煌
-
2023-06-07 05:31:09
【世界热闻】青藏铁路 死人_青藏铁路死了多少人
1、在中国有一条这样的公路,被誉为天路。2、这条路就是闻名世界的川藏
-
2023-06-07 05:30:46
海豚人是什么意思_海豚人是真的吗
1、假的!当时世界上都不支持中国对越南动武,如果有这种事,中国还不
-
2023-06-07 05:01:36
世界视讯!诉讼法刑法诈骗罪的量刑标准
《刑法》第二百六十六条关于刑法诈骗罪量刑标准的规定【诈骗罪】诈骗公
-
2023-06-07 04:55:40
科大讯飞:将在6月9日发布“讯飞星火认知大模型”V1.5|环球快看
快科技6月6日消息,科大讯飞发布公告,将在6月9日推出讯飞星火认知大模
-
2023-06-07 04:41:49
我国首台高品质因数1.3GHz超导加速模组研制成功
6日,记者从中科院高能物理所获悉,该所研制的高品质因数1 3GHz超导加
-
2023-06-07 04:19:21
三星、海尔供应商年入25亿冲刺IPO,老板儿子隐瞒供应商身份?
家电届智能控制器“老三”冲刺IPO。作者|刘钦文编辑丨李白玉来源|野马
-
2023-06-07 04:09:17
三星、海尔供应商年入25亿冲刺IPO,老板儿子隐瞒供应商身份?
家电届智能控制器“老三”冲刺IPO。作者|刘钦文编辑丨李白玉来源|野马
-
2023-06-07 04:19:11
三星、海尔供应商年入25亿冲刺IPO,老板儿子隐瞒供应商身份?_世界快资讯
家电届智能控制器“老三”冲刺IPO。作者|刘钦文编辑丨李白玉来源|野马
-
2023-06-07 04:00:30
魔兽世界苏拉玛任务线怎么开启(苏拉玛堕夜精灵声望怎么刷)
1、1 苏拉玛主线任务2 苏拉玛地区的世界任务,单个任务75~250声望,大
-
2023-06-07 03:36:46
艺涵名字的寓意(男孩艺涵名字的寓意)_环球快资讯
1、艺涵这两字字的字义,艺读[yì],五行为木,字型为上下结构。艺:才能,