“接口自动化测试是指通过编写代码或使用工具,模拟用户发送请求,验证接口是否符合设计规范和功能需求的过程。”
【资料图】
接口自动化测试可以提高测试效率和质量,节省测试成本和时间,保证测试覆盖率和可维护性。
让勇哥带你入门如何用 python +ddt+excel 实现接口自动化测试,请瞧如下内容:
python 是一种简洁、优雅、易学的编程语言,它有丰富的第三方库和社区支持,非常适合用来进行接口自动化测试。安装 python 的3.0以上的版本),并配置好环境变量,以便在命令行中使用 python 命令。
为了进行接口自动化测试,我们需要安装以下几个库:
requests:用来发送 HTTP 请求,支持各种方法、参数、头部、身份验证等。
xlrd:用来读取 excel 文件中的数据,支持 xls 和 xlsx 格式。
openpyxl:用来写入 excel 文件中的数据,支持 xlsx 格式。
ddt:用来实现数据驱动测试,可以从 excel 文件中读取多组数据,并生成多个测试用例。
unittest:用来编写和执行测试用例,支持断言、前置后置条件、测试套件等。
HTMLTestRunner_api:用来生成 HTML 格式的测试报告,支持图表、日志、截图等。
我们可以使用 pip 命令来安装这些库,例如:
pip install requests
我们需要在 excel 文件中填写接口的相关信息,包括:
接口名称
请求地址
请求方法
请求参数
预期结果
例如:
我们可以将这个 excel 文件保存为 test_data.xlsx,并放在项目的 test_datas 目录下。
为了方便地读取和写入 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
为了方便地发送 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()
我们需要使用 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()
我们需要使用 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
标签:
上一篇 : 男孩背脑瘫同学10年今天一起高考:希望还能继续同窗
下一篇 : 最后一页
警钟长鸣,绷紧安全弦夏季来临,天气变得炎热也是溺水事故高发的时节历
06-08 07:19:14
进口瑞士矿泉水清关公司_进口矿泉水外贸代理【报关报检无烦忧】矿泉水
06-08 07:10:15
(全球TMT2023年6月7日讯)5月30日,多模态大模型产业高峰论坛在北京举
06-08 06:55:22
近日,嘉越医药宣布完成逾亿元pre-C轮融资。本轮融资由成都生物城基金
06-08 06:31:29
每经AI快讯,有投资者在投资者互动平台提问:请问贵公司的控股子公司国
06-08 06:31:07
9月2日,《深圳市前海深港现代服务业合作区管理局香港特别行政区政府财
06-08 06:28:01
快手极速版怎么办小号快手极速版开小号教程,
06-08 06:03:04
接到挂职怒江农业农村局副局长任务的宋启道,脑海中浮现这样一幅画面:
06-08 06:02:15
6月7日,买车网Buycar获悉,长安汽车发布关于网传《致长安汽车采购部的
06-08 05:31:52
6月6日,一台应急电源车提前“进驻”福建省莆田市第三中学配电室外,国
06-08 05:36:21
建研设计(301167)06月07日在投资者互动平台表示:您好!感谢您的关注
06-08 04:52:15
在装修厨房的时候,需要购买装修材料,对于橱柜台面来说,可以考虑使用
06-08 04:51:22
想必现在有很多小伙伴对于学者有四失文言文翻译方面的知识都比较想要了
06-08 04:51:25
陈都灵的一组美照曝光,她盘发搭配缎面长裙尽显质感,整个人优雅十足,
06-08 04:05:39
千兆以太网是一种高速以太网连接,可提供更快的数据传输、更低的延迟、
06-08 03:50:34
同花顺金融研究中心6月7日讯,有投资者向大元泵业提问,汇率跌对公司有
06-08 03:50:48
人民网广州6月7日电(王雅蝶)6月7日,迎来2023年高考首日。据广东省教
06-08 03:56:47
证券时报e公司讯,江苏省政府办公厅印发关于推动外贸稳规模优结构若干
06-08 03:06:05
隐形冠军是一个定义企业的流行词,源于德国赫尔曼·西蒙(HermannSimon)
06-08 03:13:21
6月7日河北沧州临港滨海化工99%片碱报3100元 吨左右,较上一交易日持平
06-08 02:53:25
人的大脑中主要由以下生命动脉供血,分别是颈动脉和椎动脉,左右各一。
06-08 02:22:03
集成电路封装是伴随集成电路的发展而前进的。随着宇航、航空、机械、轻
06-08 02:00:34
近日,全省中药传统性状鉴别技能大赛在甘肃省中医院举行,有来自省内14
06-08 01:59:36
西部证券6月6日发布公告。投资建议:历经20余年专业技术深耕,公司以当
06-08 01:21:50
1、《终极证据》演员表:何涌生饰冯涛童一丹饰于岚伊洋饰杨志杰侯俊丞
06-08 00:39:16
“人人讲安全、个个会应急”是全国第22个“安全生产月”活动主题。轨道
06-08 00:39:16
想必现在有很多小伙伴对于火车连续发出两声长鸣这表示方面的知识都比较
06-08 00:26:54
亚航集团于2022年1月更名为CapitalA,旗下有亚航马来西亚、泰国、印度
06-08 00:12:07
经审理查明,被告人陈克祥在先后担任岳阳市畜牧水产局局长、岳阳市城市
06-07 23:44:47
湖南地区1 电解锰报价区间在14600-14800元 吨,均价14700元 吨,较前一
06-07 23:26:06
每经AI快讯,有投资者在投资者互动平台提问:请问公司有无电力方面的业
06-07 22:48:02
父亲节手抄报文字:1、父亲就是老黄牛,上班多挣钱,下班要干活;收入交
06-07 22:58:25
6月6日,山东省济宁市梁山县举行“黄河民兵”宣讲团成立暨宣讲活动启动
06-07 22:37:56
06月07日,罗博特科股价大涨。截至今日收盘,罗博特科上涨20 00%,收盘
06-07 22:11:48
建科机械(SZ300823,收盘价:18 85元)发布公告称,2023年06月06日10:
06-07 22:06:08
报告显示,持续推动的商业化进程中,第一季度B站总营收达50 7亿元,同
06-07 21:54:35
极目新闻记者李庆通讯员王伟6月7日,又一届高考学子奔赴考场,在青春的
06-07 21:34:44
深水规院06月07日主力资金净流出887 52万元,涨跌幅为-2 20%,主力净量
06-07 21:40:55
“多亏了‘维权娘家’,要不然还不知道什么时候能够拿到工伤赔偿。”日
06-07 21:26:45
1、古时称流离、留璃、青玉石等,古人对人造及天然的宝石、料器、玻璃
06-07 21:19:33
一、阿尔巴尼亚女人多吗?阿尔巴尼亚国家男女人口比例基本一致,所以,
06-07 21:06:22
作为国家版本资源总库和国家版本数据中心,中国国家版本馆目前共存藏各
06-07 20:44:21
想必现在有很多小伙伴对于君子天行健后面六句话方面的知识都比较想要了
06-07 20:41:18
今天,大学路小编为大家带来了南京低分专科院校排名前十南京专科学校排
06-07 20:17:37
又到一年高考时,为给广大考生和送考家长提供一个整洁、舒心的考试环境
06-07 20:08:44
想必现在有很多小伙伴对于腊八粥的由来方面的知识都比较想要了解,那么
06-07 19:53:44
俄罗斯副总参谋长称,俄军正计划新组建包括2个集团军在内的多支新部队
06-07 19:22:19
百度贴吧APP被很多朋友使用,但有些新手朋友还不能换头像,本教程讲解
06-07 19:22:44
1、这个不确定,一般是3-10万左右的。2、看你具体情况而定。3、就像是
06-07 19:22:00
耕耘于四时 收获于盛夏今天我们共同迎来2023年高考银川公安全力以赴
06-07 19:29:07
警钟长鸣,绷紧安全弦夏季来临,天气变得炎热也是溺水事故高发的时节历
2023-06-08
进口瑞士矿泉水清关公司_进口矿泉水外贸代理【报关报检无烦忧】矿泉水
2023-06-08
(全球TMT2023年6月7日讯)5月30日,多模态大模型产业高峰论坛在北京举
2023-06-08
近日,嘉越医药宣布完成逾亿元pre-C轮融资。本轮融资由成都生物城基金
2023-06-08
每经AI快讯,有投资者在投资者互动平台提问:请问贵公司的控股子公司国
2023-06-08
Copyright © 2015-2022 纤维头条网版权所有 备案号:沪ICP备2022005074号-20 联系邮箱:58 55 97 3@qq.com