领导看了给你加薪!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-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-08 04:26:55
领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座!
“& 160;接口自动化测试是指通过编写代码或使用工具,模拟用户发送请求
-
2023-06-08 03:46:03
罗博特科06月07日大涨,股价创历史新高
06月07日,罗博特科股价大涨。截至今日收盘,罗博特科上涨20 00%,收盘
-
2023-06-08 03:54:12
绵阳平武:农民运动会精彩纷呈 不误农时趣味多-环球讯息
传承农耕文化,乐享田园时光。6月6日,时值芒种,在绵阳平武县高村乡的
-
2023-06-08 03:07:46
客观唯心主义和主观唯心主义的区别是什么意思_客观唯心主义和主观唯心主义的区别是什么 天天新视野
想必现在有很多小伙伴对于客观唯心主义和主观唯心主义的区别是什么方面
-
2023-06-08 02:55:57
win10 投影到此电脑 灰色_win10投影到此电脑不能用|环球实时
1、一、原因:出现这样的情况,多半是由于显卡驱动和Win10不兼容所导致
-
2023-06-08 02:40:22
GaussDB(DWS)查询过滤器原理与应用
摘要:GaussDB(DWS)查询过滤器(黑名单)提供查询过滤功能,支持自动隔
-
2023-06-08 02:45:08
世茂能源06月07日主力资金大幅流出
世茂能源06月07日主力资金净流出751 33万元,涨跌幅为-1 41%,主力净量
-
2023-06-08 02:24:56
商品期货收盘多数下跌,甲醇跌3%,纸浆、尿素、纯碱跌超2% 每日视讯
方正期货表示进口木浆现货市场成交氛围平平,价格稳中略降。目前浮法
-
2023-06-08 01:41:24
官旗促销 爱奇艺黄金会员年卡+京东plus年卡 138元_观热点
官旗促销爱奇艺黄金会员年卡+京东plus年卡138元
-
2023-06-08 01:24:27
世界焦点!广东2023年夏季高考首场考试顺利进行,70万考生奔赴考场
文 羊城晚报全媒体记者孙唯6月7日,广东省2023年普通高考首场语文科目
-
2023-06-08 01:10:25
平潭老字号“逆龄”成长的秘密-热头条
“希望通过宋锦记海洋科技食品加工园项目,让‘宋锦记’这个平潭老字号
-
2023-06-08 00:56:35
先达股份:年产1000吨咪唑烟酸、3000吨农药中间体项目试生产
先达股份公告,公司全资子公司辽宁先达农业科学有限公司年产1000吨咪唑
-
2023-06-08 00:52:05
当前信息:融创提请股东大会授予董事发行不超已发行股份数目的20%新股
公司谨订于6月30日举行股东周年大会 财经网讯6月7日,融创中国发布
-
2023-06-08 00:31:40
大盘弱势震荡不改 走势反复在所难免
金融投资网记者林珂快速回调后大盘继续震荡分化。沪指周三小幅高开后围
-
2023-06-08 00:25:11
主要矛盾和次要矛盾的方法论_主要矛盾和次要矛盾
想必现在有很多小伙伴对于主要矛盾和次要矛盾方面的知识都比较想要了解
-
2023-06-07 23:56:52
健之佳:王雁萍女士累计质押的公司股份数为129万股
健之佳(SH605266,收盘价:80元)6月7日晚间发布公告称,截至本公告日
-
2023-06-07 23:39:53
2023年6月7日广西铁矿石(巴)价格最新行情预测 天天播资讯
中国报告大厅2023年6月7日广西铁矿石(巴)价格最新走势监测显示:防城港
-
2023-06-07 23:26:20
最早江苏方言茉莉花原唱?
一、最早江苏方言茉莉花原唱?茉莉花是江苏民歌,是由何仿率领的合唱队
-
2023-06-07 23:27:59
传媒、软件、AI板块领涨!12股股价再创历史新高|世界今头条
人工智能、传媒娱乐、软件服务等板块表现较好,中国科传、中国出版等传
-
2023-06-07 23:19:23
【清一色午报】三大股指涨跌不一,宁德时代跌超5%,AI概念股再迎集体反弹|全球观察
①宁德时代跌超5%,在其拖累下创业板续创年内新低;②两市共38只个股涨
-
2023-06-07 23:06:25
【活跃度】6月7日商品期货活跃度排行榜:原油、菜油、橡胶位列前三 环球聚看点
6月7日,商品期货活跃度排行榜(TOP10)出炉:品种名称成交量持仓量活
-
2023-06-07 22:22:04
微速讯:【收评】豆油日内上涨0.03% 机构称油脂反弹乏力
行情表现6月7日收盘价当日涨跌幅五日涨跌幅豆油7016 00元 吨0 03%3 48%
-
2023-06-07 21:57:57
中国科学家领衔国际团队发现第一代超大质量恒星化学遗迹 环球观天下
中新网北京6月7日电(记者 孙自法)宇宙中第一代恒星质量有多大?理论预
-
2023-06-07 21:42:12
传媒、软件、AI板块领涨!12股股价再创历史新高 世界看热讯
人工智能、传媒娱乐、软件服务等板块表现较好,中国科传、中国出版等传
-
2023-06-07 21:24:51
经典互联网是否仍然重要? 热门看点
日前,互联网协会进行了一项小型研究,探索互联网边缘的发展和创新,重
-
2023-06-07 21:08:14
天天热讯:税收红利精准直达 经营主体减压力强信心
今年以来,为推动政策红利精准高效直达经营主体,税务部门既加力政策解
-
2023-06-07 20:25:09
泰安市立医院开展全国“爱眼日”宣传教育周系列活动 世界新要闻
通讯员孙鲁腾李元鹏在第28个全国“爱眼日”到来之际,为进一步普及广大
-
2023-06-07 20:30:02
注意!概伦电子将于6月28日召开股东大会
概伦电子(SH688206,收盘价:29 61元)6月7日发布公告称,2023年6月28
-
2023-06-07 20:28:34
荷兰警方在泽兰省截获多批可卡因 天天滚动
同时,荷兰海关发布消息称,荷兰海关在警方的帮助下在泽兰省弗利辛恩港
-
2023-06-07 19:54:31
梅园好时光
仲夏时节,江西省上饶市万年县湖云乡邱家村农民杨梅园又迎来了“梅”好