领导看了给你加薪!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
标签:
相关推荐:
最新新闻:
- 中消协发布消费警示:警惕培训班退费骗局
- 宏盛股份:储能及动力电池液冷技术正在开发中
- 江苏出台14条措施推动外贸稳规模优结构
- 德云社门票在哪买_德云社在哪个城市
- 领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座!
- 楼市“促稳”举措提振家电家居信心 业内提醒:板块估值仍在高位 世界短讯
- 波音公司回应787飞机发现问题:影响近期交付
- 头条:足球报谈亚运队未征召武磊:确保国足备战,且他需要中场强力支持
- 全球球精选!拒绝14亿?梅西下家球队是迈阿密或巴萨,沙特不是考虑范围
- 环球快报:北京住建委:已购共有产权住房家庭取得不动产权证满5年 可按市场价格转让所购房屋产权份额
- 【播资讯】聚焦深圳文博会:为文化产业高质量发展注入澎湃动力
- 西媒:巴萨对梅西回归持悲观态度,梅西似乎不可能等巴萨清人计划
- 山雨欲来风满楼,珠海商管19.8亿元股权被冻结,王健林曾称有困难_全球看热讯
- 天天百事通!和胜股份:在项目研发前沿领域一直与宁德时代深度合作
- 被炸毁的卡霍夫卡水电站,究竟有多重要?_环球报道
- 全球快资讯:全球新资讯:《羊毛战记》4K完整版已上传!国外爆火科幻剧
- 环球简讯:亚航低成本航空复苏有道_世界速递
- 【天天热闻】WTI原油日内涨幅扩大至2%,布伦特原油日内上涨1.8%
- 天天观速讯丨原料“销路”单一,艾迪药业押宝创新药能否柳暗花明?
- 绝味食品股价连续下跌,被称为鼠头受害股,戴文军已开店1.5万家_微速讯
- 明星基金继续押注中国股票:每一次下跌都是买入好机会
- 每日聚焦:上海市消保委呼吁制定细化外卖包装收费规则 把选择权交给消费者
- 热头条丨郭广昌要卖德邦证券?近两年净亏近5个亿
- 6月7日国内氢氟酸产业链部分价格下滑
- 城市传媒:公司和上海爱美联合出品电影《好像也没那么热血沸腾》
- 宏杉科技发布MData数据库一体机 打造可靠易用的企业级国产化数据库-聚焦
- 大宗交易:富士达成交198.56万元,折价30.23%(06-07)
- 当前快播:5月末我国外储规模31765亿美元 央行连续第7个月增持黄金
- 艾布鲁:股东拟减持不超1%股份_全球热点评
- 建发股份重组遭问询:要求说明交易完成后美凯龙控股股东变更为公司的依据及合理性
- 大连:多措并举 保驾护航 助力滨城莘莘学子逐梦高考
- 岷县市场:受降雨影响当归成交货源不多 价格持续上涨|动态
- 环球看热讯:6月7日国内各地锌精矿行情汇总
- 6月7日国内萤石产业链部分价格下滑 环球今亮点
- 个人信用卡逾期债务如何处理
- 网签合同多长时间必须纳税
- 全球实时:外交部:日本政府一再为福岛核污染水“洗白”,事实却一再“打脸”
- 6月7日东营益盛醋酸丁酯报价下调 环球通讯
- 全球短讯!2023年6月7日苯胺动态
- 要闻:港股异动 | 微创机器人-B(02252)涨超4% 河北医科大学第四医院完成32例图迈?机器人手术
- 每日热点:对供应商货款扣款10%? 长安汽车回应:内容不实,已报案
- 锤哥:《雷神4》我们确实拍得太傻了 全球速讯
- 恒指公司:港股行情越差 投资者对科技股越感兴趣 微头条
- 异动快报:冠石科技(605588)6月7日14点44分触及跌停板
- 港股异动 | 海昌海洋公园(02255.HK)一度跌超33% 北水连续10日减仓 公司回应称经营一切正常
- 今亮点!侃爷妻子黑丝造型街拍 丝袜套头太辣眼
- 当前关注:《吸血鬼:避世血族2》公布新截图 预购退款也已开通
- 世界热消息:老使我怨淇则有岸隰则有泮_淇则有岸隰则有泮
- 再犯新罪判缓刑后还会重新犯罪么 即时看
- 欧来抱抱童装_欧抱抱童装官网
- 要闻:港股异动 | 微创机器人-B(02252)涨超4% 河北医科大学第四医院完成32例图迈?机器人手术
- 港股异动 | 星空华文(06698)涨超4%创新高 总市值超500亿《中国好声音2023》网传将定档7月21日
- 冠石科技(605588)6月7日14点44分触及跌停板
- 今日热搜:中原证券:给予华英农业增持评级
- 异动快报:冠石科技(605588)6月7日14点44分触及跌停板
- 港股异动 | 海昌海洋公园(02255.HK)一度跌超33% 北水连续10日减仓 公司回应称经营一切正常
- 柳州市气象台发布雷电黄色预警信号【III级/较重】【2023-06-07】-新动态
- 暖心高考|今年广西首次使用“智能安检门”_焦点速看
- 提醒!端午节假期首日火车票明日开售
- 横州市气象台发布暴雨橙色预警信号【II级/严重】【2023-06-07】_当前快报
- 今头条!interviewer interview
- 天天播报:文房四宝中四大名砚是什么 四大名砚是什么
- 实时焦点:九尾狐转_关于九尾狐转的介绍
- 每日头条!小儿食欲不振推拿手法_食欲不振推拿哪里
- hyewon郑惠媛_郑惠媛_最新快讯
- 世界热消息:老使我怨淇则有岸隰则有泮_淇则有岸隰则有泮
- 欧来抱抱童装_欧抱抱童装官网
- 南向资金今日净买入2.41亿港元-全球通讯
- 中国外汇投资研究院:本轮日元贬值侧重内因
- 当前视点!23旭越惠诚2优先C票面利率为3.5000%
- 深交所向联络互动发出问询函
- 6月7日国内硝酸铵产业链部分价格上涨
- 高考首日,河北省公安交警驻点全力护航
- 天天速递!中消协发布消费警示:警惕培训班退费骗局
- 当前资讯!苏州相城一企业获批国家博士后科研工作站
- 全球动态:佳木斯领导调研地面站项目
- 云辇-P加持仰望U8,让越野和公路都从容不迫
- 福特蒙迪欧1.5T版本将上市!起售价或降至15万以内
- 天天热点评!传统村落消防安全有隐患 云南一镇政府被提起公益诉讼
- 协鑫能科调整发行可转债方案 删减“年产3万吨电池级碳酸锂项目”_观察
- *ST明诚:法院裁定受理公司重整 股票将被叠加实施退市风险警示
- 全球热议:机构:房企融资规模仍在下降 海外债有新发
- 澳优出售新西兰奶粉工厂 买方为伊利全资子公司 世界微头条
- 智能表面产品和新型底盘产品目前有没有获得订单?宁波华翔回应 全球头条
- 海南橡胶:公司合同采用书面方式签署