“接口自动化测试是指通过编写代码或使用工具,模拟用户发送请求,验证接口是否符合设计规范和功能需求的过程。”
(资料图片仅供参考)
如何用 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
-
领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座!“& 160;接口自动化测试是指通过编写代码或使用工具,模拟用户发送请求
-
高速服务区遭遇欺骗行为-环球新资讯高速服务区遭遇欺骗行为投诉直通车是湖南日报、华声在线、新湖南主办的
-
【天天播资讯】【收评】螺纹日内下跌0.93% 机构称螺纹钢预期逐渐消化行情表现6月7日收盘价当日涨跌幅五日涨跌幅螺纹3621 00元 吨-0 93%4 56
-
龙舟赛期间南昌免费发放1万张景区门票为营造端午浓厚节日氛围,助力中国南昌国际龙舟赛,南昌市文广新旅局将
-
文旅部发布《2023年第一季度全国旅行社统计调查报告》截至2023年第一季度,全国旅行社总数为47069家。在第一季度中,全国旅
-
华立科技:公司主要从事游戏游艺设备的设计、研发、生产、销售和运营,目前暂未直接开展“空间计算”业务及技术研发同花顺金融研究中心6月7日讯,有投资者向华立科技提问,请问公司有空间
-
海关总署:前5个月民营企业进出口总额同比增长13.1%海关总署:前5个月民营企业进出口总额同比增长13 1%
-
世界快资讯:华胜天成(600410)6月7日主力资金净卖出2808.80万元截至2023年6月7日收盘,华胜天成(600410)报收于7 34元,上涨0 0%,换手
-
天天精选!云图控股:截至本公告日,宋睿累计质押股数约为1.09亿股云图控股(SZ002539,收盘价:9 09元)6月7日晚间发布公告称,截至本公
-
俄罗斯最冷的地方是奥伊米亚康_俄罗斯最冷的地方 焦点观察想必现在有很多小伙伴对于俄罗斯最冷的地方方面的知识都比较想要了解,
-
专访:中国市场巨大潜力坚定外企投资信心——访维京游轮中国区董事总经理唐博文 当前速看国际知名跨国游轮公司维京游轮中国区董事总经理唐博文(英文名布伦丹·
-
当前速讯:百洋医药:公司目前在青岛有约10家药店,暂无拓展开店的计划同花顺金融研究中心6月7日讯,有投资者向百洋医药提问,董秘您好,请问
-
应急部:今年5月各种自然灾害共造成958.4万人次受灾近日,应急管理部会同工业和信息化部、气象局、国铁集团等部门和单位,
-
世界快讯:宁沪高速(600377)6月7日主力资金净买入663.37万元截至2023年6月7日收盘,宁沪高速(600377)报收于9 86元,上涨4 56%,换
-
环球简讯:学子奔赴考场!新高考分为“3+3”和“3+1+2”选考模式央视网消息:2023年全国高考6月7日开考,今年全国高考报名人数1291万,
-
今日现货黄金价格多少(2023年6月7日)-环球快看今日现货黄金价格多少(2023年6月7日)
-
天迈科技拟定增募资不超1.15亿 首季及去年前年均亏损天迈科技(300807 SZ)今日股价收报26 11元,涨幅1 01%,总市值17 72亿元
-
西藏珠峰(600338)6月7日主力资金净买入59.91万元|当前观点截至2023年6月7日收盘,西藏珠峰(600338)报收于17 96元,下跌0 55%,换
-
【环球速看料】南方传媒(601900)6月7日主力资金净买入9628.47万元截至2023年6月7日收盘,南方传媒(601900)报收于26 29元,上涨10 0%,涨
-
介绍几款好用的工具给你工具一:PixabayPixabay是一个非常实用的免费图片和视频素材库,它
-
民间借贷纠纷的管辖权如何确定(民间借贷管辖权司法解释) 世界热消息来为大家解答以上的问题。民间借贷纠纷的管辖权如何确定,民间借贷管辖
-
观速讯丨千万不要用小拇指掏耳朵了,掏耳朵的正确打开方式请查收!耳朵是人体重要的感觉器官之一,我们需要保持耳朵的清洁和健康。然而,
-
ETF投资(九)|和普通基金“不大一样”的ETF申赎 天天要闻6月7日,财联社星矿数据显示,今日早盘主力资金净流入家用电器、房地产
-
三星Exynos Auto V920助力现代汽车下一代车载信息娱乐系统 环球最资讯ExynosAutoV920成为三星与现代汽车于车载芯片解决方案首次合作的里程碑
-
究竟是什么导致叶罗丽如此受欢迎?这三点过于真实举两个极端的例子,剧中叶罗丽战士舒言的父母都是大学教授,虽然平时陪
-
天天精选!儿白是什么意思_儿白是什么意思东北话想必现在有很多小伙伴对于儿白是什么意思东北话方面的知识都比较想要了
-
叶萧是哪部小说主角_叶萧 全球短讯1、叶萧和雪瑶抄出自《女总裁的王牌高袭手》《女总裁的王牌高手》由咪
-
董子春秋义法辞考论_关于董子春秋义法辞考论的简介音频解说1、余治平编著的《董子春秋义法辞考论》是一部从义、法、辞三
-
酒品代表国家文化?这4大不同国家的饮酒文化差异,太有趣了!|热闻酒品代表国家文化?这4大不同国家的饮酒文化差异,太有趣了!你是否曾
-
金科股份:拟购买恒昇大业20%股权 股票停牌-世界即时看【金科股份:拟购买恒昇大业20%股权股票停牌】金科股份(000656)6月6日