领导看了给你加薪!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
标签:
相关阅读
-
06-07
-
06-07
推荐阅读
-
领导看了给你加薪!python +ddt+excel 一招鲜,
“& 160;接口自动化测试是指通过编写代码或使用工具,模拟用户发送请求,验证接口是否符合设计规范和功能需更多
2023-06-07 18:48:32
-
营造整洁舒心考试环境,宝山环卫在行动!
又到一年高考时,为给广大考生和送考家长提供一个整洁、舒心的考试环境,宝山环卫提前行动,对考点学校进行更多
2023-06-07 18:46:09
-
卡霍夫卡水电站大坝遭破坏,会有哪些影响? 环球
卡霍夫卡水电站位于俄罗斯控制的扎波罗热核电站下游,该核电站依靠卡霍夫卡水库冷却反应堆,同时,大坝所在更多
2023-06-07 18:18:53
-
逸豪新材董秘回复:PCB产品可应用于数据中心必要
逸豪新材(301176)06月07日在投资者关系平台上答复了投资者关心的问题。更多
2023-06-07 18:20:21
-
衍生漫画《工作细胞illegal》第4卷完结 9月发售
由桥本カヱ绘制的《工作细胞》衍生漫画《工作细胞illegal 非法工作细胞》第3卷单行本宣布,该漫画将于第4卷更多
2023-06-07 17:52:25
-
北京继续发布高温黄色预警
北京市气象台2023年6月7日16时30分继续发布高温黄色预警信号:预计,8日至9日本市大部分地区最高气温仍可达更多
2023-06-07 18:08:12
-
在艺术的田野上一起奔跑!首届乡村儿童艺术嘉年华
由文化和旅游部艺术司、产业发展司,河南省文化和旅游厅指导,中国儿童艺术剧院主办、光山县人民政府联合主更多
2023-06-07 17:58:49
-
北京市曲剧团跨界联袂北京民族乐团 将经典《正红
北京演艺集团第九届“五月演出季”的特色单元、北京市曲剧团携手北京民族乐团演出的《正红旗下》情境音乐会更多
2023-06-07 18:06:03
时尚热图
热门标签
精彩放送
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
06-07
-
今日必看
-
精彩话题
-
最新见闻
- 端午节假期首日火车票6月8日开售
- 周大生:会加大在华东、华南开店力度 世界聚焦
- 【世界热闻】丰台3464名考生参加高考 考点周边开启“降噪模式”
- 焦点速递!吉视传媒:公司目前没有建立财务共享中心
- 国科微2亿元于杭州新设子公司 含集成电路销售业务
- @端午节有出行计划的小伙伴们 该买火车票啦!
- 全球通讯!6·18流量换打法
- 赛摩智能:公司主要提供云检修、智慧班组、燃料验收管理等信息化管理软件|观焦点
- 今日关注:镇平张林镇:政务服务水平再上新台阶
- 股指预计维持震荡格局 保持价值略大于成长的均衡配 快看点
- 新型冠状病毒mRNA疫苗Ⅱ期临床试验启动
- 贷款一年的基准利率是多少?按揭利率基准什么意思?
- 美联储降息对金融市场的影响是什么?美联储降息利好哪些行业?
- 视频 | 考生忘带准考证,家长急坏了,民警“出手”了!
- 日喀则向您发出真诚邀约!
- 理财产品有风险吗?买理财产品有什么风险?
- 税收红利精准直达 经营主体减压力强信心
- 建行龙卡信用卡年费多少?建行信用卡龙卡每年的年费是多少?
- 买股票是怎么收费的?北交所开通后怎么买股票?
- 钮文新:A股谨防“两头堵”——别把人民币和股市乱联系_每日快报
- 公积金贷款怎么计息?公积金贷款后账户余额可取出吗?
- 封闭式基金亏损怎么办?18个月封闭基金怎么退?
- 加快推进优质公共资源向五个新城集聚 15个公共建筑及景观项目设计征集圆满收官
- 固收型基金还能上车吗?基金亏了按照什么原则加仓?
- 电影《速度与激情10》票房破9亿
- Prada和Zegna收购针织品公司Fedeli少数股权
- 用友u8反记账账的操作步骤(用友u8反记账如何操作)_精选
- 1bar等于多少mpa(bar等于多少mpa)
- 存款产品变理财怎么办?协议存款与协定存款的区别介绍
- 银行卡密码输错3次被锁了怎么办?银行卡好久没用被冻结了怎么办?
- 天天速看:“抢”字当头!小麦抢收、水稻抢种 田间地头农事忙
- 二类卡限额钱怎么取出来?二类卡影响工资进账么?
- 今日快看!国科微:公司NPU已实现前端IPC最高4T算力和后端NVR/DVR 9T算力
- 2023年高考开考 1291万考生报名参考再创历史新高 环球聚焦
- 天天快资讯:恒信东方:苹果Vision Pro头显刚刚发布 目前无法判断其他平台的开发积累能否直接移植至该平台
- 第二届泰国主题风情节“神奇泰国——中泰旅游节”开幕
- 天天滚动:长春高新跌逾9% 董办工作人员回应公司一切正常
- 给高考生的11条饮食建议,家长们快收好|全球百事通
- 2023年高考全国共设7726个考点 全球动态
- 商汤与上海AI实验室等发布“书生·浦语”大模型|环球快资讯
- 第十九届文博会开幕 推动中国文化产业发展
- 亿利达:当前中央空调风机在手订单情况良好
- 中消协发布消费警示:警惕培训班退费骗局 环球热点
- 村田制作所与安永共同开发使用新材料的吸液芯用于电子设备散热部件“热导板” 天天速读
- 抖音扩张自营电商?回应:将进行业务尝试_天天亮点
- 今年前5个月我国进出口总值16.77万亿元 与美日进出口往来有所下行 天天时快讯
- 世界热推荐:特写|以方言短视频打造有温度的医学科普
- 美国行我也行,莫迪用卢比一次次收割俄罗斯,而且还上瘾了 焦点速读
- XR品牌VITURE完成近千万美金A+轮融资,蓝驰创投独家投资 环球热讯
- 共7套试卷 2023年高考作文题汇总来了!
- 全球消息!图知道|2023高考作文你想写哪篇
- 5月全国城市轨道交通客运量24.9亿人次-热点聚焦
- 海关:前5月铁矿砂、原油、煤进口量增价跌 天然气、大豆进口量价齐升
- 协鑫能科:项目删减后 将在清洁能源、移动能源、锂电材料三大业务上发力
- 官宣!本泽马2亿年薪加盟吉达联合,曝沙特再对梅西提高报价-天天新动态
- 每日消息!不和阿根廷队一同抵达!梅西官宣决定,名记曝内幕,中国球迷失落
- 港股餐饮股午后走高 龙皇集团涨15%_今日视点
- 【全球时快讯】中国通号:公司高管、员工通过资管计划参与科创板战略配售,均为个人自有资金购买
- 天天快看点丨安达科技实控人拟一个月内增持最高800万元公司股份
- 北京发布雷电蓝色预警
- 【独家】2023年在改善业绩方面有哪些重要举措?乐心医疗回应
- 【播资讯】日本商业原油库存下降17万千升至1157万千升
- 焦点滚动:全国职工数字化应用技术技能大赛决赛开幕
- 今日关注:2023高考北京语文作文题公布:“续航”和 “亮相” 二选一
- 贾樟柯将拍第10部剧情片《风流一代》
- 高考第一天 全国各地爱心助考 确保考生顺利应考-焦点信息
- 大健康产业布局大数据 推动医疗走向精准 当前速看
- 高考第一天,冯巩发短视频祝考生“冯(逢)考必胜”_信息
- 孟晚舟:万物正走向可感知、互联、智能 数字孪生世界正在构建 当前要闻
- 在探索与好奇中破“卷” | 2023高考加油 快资讯
- 头条:5G已融入超六成国民经济大类
- 测序仪巨头因美纳基于灵长类动物基因推出AI算法,预测致病基因突变-天天速看
- 《变形金刚7》,看得好爽!
- 资金大幅流出TMT板块 后市风格将如何演绎?
- 晨化股份:拟与上海吉碳对福州晨化合计增资200万元 世界热议
- 【全球速看料】鹏鼎控股:苹果是公司的主要客户
- 感悟|世界是一座桥,走过去,不要在上面盖房子
- 生活|推着车慢慢走下坡路的时候|快资讯
- 《长安三万里》曝李白角色预告,“诗仙”吟诗舞剑直抒胸中大鹏之志 每日信息
- 全球报道:维峰电子:公司有应用在通信相关领域的技术及产品
- 我国牵头编制的零碳电力系统等三本国际标准化白皮书正式发布 世界简讯
- 电子后视镜新国标将于7月实施 行业总体市场规模有望超60亿_全球今头条
- 每日视点!视频 | 直击2023高考首日:祝福相伴,高考加油!
- 高考来临,这些高考类诈骗套路千万别信!|今热点
- 永辉超市原CEO李国任盒马NB事业部负责人
- 生活|亲人间长长的亲情和感动 中国首创家庭刊物《水》之溯源 全球微动态
- 中消协发布消费警示:警惕培训班退费骗局
- 全球滚动:2023年北京高考大作文仍为“二选一” 考:“续航”和“亮相”
- 【环球时快讯】交易商协会发布2022年度企业债券信用评级机构信用评价工作方案
- 热头条丨最新!上海高考作文题出炉:一个人乐意去探索陌生世界,仅仅是因为好奇心吗?
- 世界热头条丨青海农作物良种覆盖率达98%以上
- 最新消息:海关总署:前5个月我国进口铁矿砂4.81亿吨 增加7.7%
- 世界热议:教育部公布素质教育监测数据 或可减少企业间恶意竞争
- 罗马全面战争秘籍有什么?罗马全面战争秘籍有哪些?
- 【天天速看料】个人养老金启动半年产品渐丰富
- 魔兽世界暗夜要塞入口在哪里?暗夜要塞打完古尔丹怎么出去?
- dnf透明药水叫什么名字?复活药水全称介绍
- qq空间时间轴在哪里?怎么绕过权限看别人qq空间?
- 和谐号速度有多快?和谐号和复兴号哪个快?
- 穿越火线汤姆逊烈龙如何获得?cf汤姆逊烈龙怎么样?