领导看了给你加薪!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
标签:
推荐文章
- 领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座!-环球快讯
- 天域生态:公司的饲料是外购,暂无自产的计划
- 福特蒙迪欧1.5T版本将上市!起售价或降至15万以内|天天热资讯
- 焦点速看:前海深港风投创投“十八条”措施发布 助力深港科技创新合作迈向新台阶
- 当前讯息:高考首日,河北省公安交警驻点全力护航
- 超越日本,中国汽车出口量全球第一?
- 高考首日 周口一企业爱心助力高考送清凉 天天即时看
- 小摩:予招商银行(03968)“增持”评级 目标价70港元_天天新消息
- 环球微动态丨黑龙江省气象台发布龙卷预警
- 珲春市气象台发布雷电黄色预警【III级/较大】【2023-06-07】
- 注意!圣龙股份将于6月28日召开股东大会 天天头条
- 全球快看点丨艾迈斯欧司朗推出适用于舱内传感的新款红外VCSEL发射器,新增可靠的内置人眼安全功能
- 速看:三德科技:针对无人化智能装备产品推出类似汽车行业“日常运维+专业检修”服务模式 已有项目落地
- 每日时讯!苹果Vision Pro成本仅1500美元
- 快报:朱强:在图纸上“修复”古今巨变的“三山五园”
- 天天滚动:第23个大满贯?德约科维奇得先过了阿尔卡拉斯这一关
- 世界简讯:可能造成一定损失!北京2区发布冰雹黄色预警
- 头条:650亿元!湖北企业能省下这些费用
- 每日简讯:“京城养老大调研”引发共鸣
- 9的倍数的特征是什么_9的倍数
- 【环球新要闻】月球上的温度最高和最低是多少_月球上的温度
- 原神:3.8过山车路线来了,测试服新增食材?枫丹十骏图萝莉定位曝光! 重点聚焦
- 世界信息:理想汽车北京顺义工厂最早7月投产?官方回应:确实在积极准备中
- 天人临世(北京)科技有限公司入围《信用中国》栏目
- 天天通讯!杀忠臣岳飞偏安一隅不思进取,宋高宗赵构真的是昏君吗?
- 加拿大野火烟雾飘向美国,自由女神像和帝国大厦被笼罩
- 下属公司累计被冻结5个银行账户,海南椰岛今日股价开盘即下跌 每日热闻
- 端午假期前一天北京至淄博高铁一票难求
- 即时看!高考首日南京二十七中考点,家长穿旗袍送考:结婚都没穿过,女儿说暑假打工给我买包
- 如何看出成交量是卖出的量还是买入的量_怎么看成交量 环球快看点
- 【全球时快讯】沪指涨0.08%,创指跌1.61%:AI+概念高温不退
- 外交部:中美保持着必要沟通,美方应当切实尊重中方核心利益和重大关切 天天微资讯
- ST阳光城(000671)6月7日主力资金净卖出47.63万元_全球快播
- 给爸爸的一封信作文450字
- 世界看点:火锅底料的做法和配方家庭_火锅底料的做法和配方
- 美国经济增长预期下调 国际油价6日下跌-新资讯
- 热资讯!白露节气的特点和风俗(白露节)
- 泽连斯基:国际原子能机构总干事将访问乌克兰_焦点要闻
- 双色球23065期国飞龙推荐 世界时快讯
- 全球快消息!首创证券给予长龄液压增持评级,公司简评报告:业绩符合预期,光伏回转减速器未来可期
- 全球快资讯丨今年1—5月无锡日均新增6.49万户市场主体 同比增长19.52%
- 跨过高考 请继续努力|全球热闻
- 应采儿晒大儿子比赛视频:10岁Jasper长高许多,大长腿好显眼
- 天天即时看!讲师已开启全员禁言模式_讲师已开启全员禁言
- 【环球新要闻】沪深股通|康力电梯6月6日获外资买入0.04%股份
- 格力电器:融资净偿还3824.75万元,融资余额52.07亿元(06-06)
- 特别的......作文600初中_特别的什么作文-即时看
- 报道:模拟实战!我国七大流域机构完成防洪调度演练
- 第5人!萨巴横扫前NO.3,12连胜+首进法网四强,赛后1幕却尴尬
- 农发行安排1100亿元信贷资金全力支持夏粮收购|每日焦点
- 当前热议!美股异动丨迅雷大涨33% 宣布2000万股票回购计划
- 每日速看!中超大连人VS山东泰山图片分享,阎相闯PK王大雷,国足教练组观战
- 乙肝疫苗cho酿酒酵母和汉逊酵母区别_乙肝疫苗第二针和第三针间隔多长时间
- 每日快播:煤炭市场价格或将继续下行 上市公司:有预期也有对策
最新资讯
- 【世界报资讯】怎么鉴定手机屏幕是不是原装
- 乔家大院剧情分集 详细(乔家大院剧情)
- 易基50基金净值天天基金净值_易基50
- 小米官网密码找回小米官网登录界面(小米网官网找回密码)|当前速讯
- 华宝新能:Jackery电小二销量和销售额位于户外电源品类第一
- 天天观速讯丨美股开盘:三大股指小幅低开 Coinbase低开近20%
- JS环球生活(01691)向董事授出合共5160万份受限制股份单位
- 天津市生态环境局:保障高考 加强夜间噪音巡查
- 灵润飘逸的意思_飘逸的意思
- 成都地铁:服务“礼包”助力考生们的“圆梦之路”
- U20女足亚洲杯预选赛第二阶段:中国1-0中国台北 卢家玉替补建功_当前速递
- 天天播报:数据分化下,哪些政策可以期待?
- girls on fire吉他谱_girls on fire
- 天天微资讯!科大讯飞:将在6月9日发布“讯飞星火认知大模型”V1.5
- 广州浪奇:董事长赵璧秋辞职
- 165个学位!三亚崖州湾科技城上海世外教育附属外国语幼儿园今秋开学
- 绫濑南
- 脚蹬拉力器锻炼方法视频_脚蹬拉力器锻炼方法图解 世界消息
- 一个村考出300多大学生6个北大 读书改变命运成每家共识_天天最新
- 新动态:“美联储已经成功了”?诺奖得主:“完美反通胀”正在实现
- 买卖房屋过户需要多少钱
- 林园但斌力挺!外资大举买入!这个千亿低估赛道正迎来抄底时机?
- 沧州7岁孩子抚养费怎么给_世界最资讯
- 安全用妆 共治共享 南京溧水护航群众“美丽”生活
- 口子窖:公司的销售队伍规模有一定增长 截至6月2日 已达351人
- 天天观焦点:月经可以吃阿胶糕吗_月经期间可以吃阿胶糕
- 微头条丨宁国市:助纳税企业尽享“信用红利”
- 【港股异动】碧桂园(02007.HK)涨7.53%
- 【原】月光云海与我-最资讯
- 看点:股市早8点丨日股再创新高·港股拒绝下跌·沪深六六大顺
- 环球快消息!如何查自己的快递 如何查自己的快递到哪里了
- 紧抓跨境电商发展机遇-每日速看
- 打造古井贡酒“第一车间”:精施“粮”策,把握“粮”机
- 世界新动态:中国人离四天工作制还有多远?
- 天天日报丨网络扫黄 美女涉黄431
- Haynes:独行侠得到詹姆斯最简单方法是他申请买断 但这不可能_天天新要闻
- 高考祝福语八字押韵_送给幼师的祝福语
- 东杰智能获7家机构调研:公司在落地订单方面表现稳定,已经获得了多个新能源电池及储能优质客户的新增订单(附调研问答)|世界速递
- 热点!面子里子一代宗师台词_一代宗师台词
- 焦点热讯:2023新高考总分多少分满分 各科目满分是多少
- 天天头条:四年级语文上册第一单元测试卷打印(四年级语文上册第一单元测试卷)
- ps抠图怎么抠的干净_ps扣字
- 中国航天70%的专用食品来自这座城市,鹤壁做了什么? 世界即时看
- 事业单位体检什么情况下会复查_事业单位体检什么情况下会不过-全球热门
- 力帆科技:5月汽车总销量3780辆 同比减少6.2%
- 鸡内金适合多大孩子吃?鸡内金一次可食用多少?-每日速讯
- 东莞大学生基层岗位补贴申请对象及条件 当前讯息
- 最新!四川3市发布最新人事动态
- 瑞幸咖啡回应小程序崩了:正在紧急抢修 请大家移步APP点单 今亮点
- 多措并举 大熊猫国家公园建设成效显著_速看