领导看了给你加薪!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 data3. 封装 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
标签:
- 焦点消息!GPLP投融资:摩尔线程获15亿元 奔腾激光获1.7亿元
- 世界快消息!吃西瓜怎么保存不坏 西瓜怎么保存比较好
- 热点聚焦:一波N折 糖价明年有点看头
- 每日速递:声迅股份:发行可转债2.80亿元 申购日为12月30日
- 环球新动态:生意宝12月27日涨停分析
- 天天速读:日本强降雪致多人死伤 局地积雪厚度超1.6米
- 【世界播资讯】俄罗斯政府将拨款约15亿卢布用于国产飞机研发制造
- 环球百事通!最近头发老是掉,一抓一大把,这该怎么办呢?
- 当前聚焦:永清环保新余垃圾发电厂获2022年度新余市科技计划项目立项支持
- 当前热讯:调查:当年英国“脱欧”支持者中仅约三成认为“脱欧”成功
- 每日快讯!四位明星的家人因新冠去世!谢晋儿子抢救无效,樊登父亲安详离世
- 观速讯丨四高校花费超千万采购核酸检测服务,有供应商仅6人参保
- 每日快播:东方锆业“产能利用率”存疑:加码电熔氧化锆前景堪忧
- 【环球新要闻】重量天花板体验新标杆 OPPO Find N2上手评测
- 当前聚焦:新疆塔什库尔干机场正式通航 帕米尔高原喜迎“空中来客”
- 世界播报:大连合同纠纷律师收费标准
- 环球今头条!犀牛看市1220:大盘全天低开低走 汽车板块午后反弹
- 天天亮点!如何主动投资为插上量化翅膀?长盛基金王宁不喧哗自有声
- 当前关注:表面是百亿票房先生,实际全是“水货”,求求这几位演员别尬吹了
- 世界热门:上坤地产(06900.HK)再度大幅走强,尾盘升约45%
- 新动态:市场先生大变脸
- 快看点丨2023年初级会计师考试采取什么考试方式
- 全球快资讯:首钢股份董秘回复:长流程钢铁生产与短流程钢铁生产或是您提到的单工序生产都有各自的特点
- 今日关注:微软发现苹果 macOS 漏洞,可植入恶意软件
- 当前短讯!芳源股份: 独立董事关于第三届董事会第十二次会议相关事项的事前认可意见
- 每日速递:小鲨易贷逾期九年多久会上征信
- 焦点快报!【机构调研记录】长安基金调研浙海德曼
- 世界百事通!漳州龙海交警严查电动车非法加装挡风披
- 世界快看点丨犀牛宝逾期十二个月影响征信吗
- 全球聚焦:先行先试为企减负 反哺创新初显成效
- 全球热议:海航科技(600751):海航科技股份有限公司关于资产购买的进展公告
- 【快播报】2022年中国货车细分市场供需情况 轻型货车销量最高【组图】
- 天天视讯!【机构调研记录】金信基金调研福田汽车
- 全球热点评!辖区居民面包车被盗 濮阳华龙公安迅速出击
- 聚焦:尔康制药:对氨基苯酚目前满负荷生产
- 天天时讯:禾丰股份:12月14日融券卖出金额21.77万元,占当日流出金额的0.48%
- 今日最新!鑫铂股份(003038.SZ)1415.73万股限售股将于12月16日上市流通
- 环球热讯:西上海:如有重大事项,公司将依法依规进行信息披露
- 环球热点!12月13日基金净值:广发均衡增长混合A最新净值0.9697,跌0.26%
- 天天快播:黄山旅游(600054)12月13日主力资金净买入1515.54万元
- 【世界独家】南京化纤:截止2022年12月09日,公司股东人数为24223人
- 全球快看:斯迪克获3家机构调研:公司生产的OCA,应用场景非常广泛,除了应用在手机终端以外,还可以用在可穿戴设备等小尺寸的屏幕上(附调研问答)
- 天天通讯!沙棘的种植方法 沙棘树怎么种
- 重点聚焦!华通线缆: 河北华通线缆集团股份有限公司股东大会议事规则(2022年12月修订)
- 今热点:招商港口: 第十届董事会2022年度第十次临时会议决议公告
- 今日关注:南阳市镇平县:“五个一”开展网格化管理
- 世界信息:天沃科技董秘回复:感谢您对天沃科技的关心和支持!公司未开展虚拟电厂相关业务
- 深圳证券交易所2022年会员大会召开 提升服务实体经济能力
- 合肥举行“江淮普法行”活动 营造高质量法治环境
- 纸浆期货是否有效对冲废黄板纸现货价格波动风险?
-
理文、山鹰发布停机函 包装纸市场涨价100-200元/吨
3月初,市场依然低迷!没想到即将步入中旬,市场却开始停机函、涨价函齐飞……这波操作会激起水花吗?3月9...
-
全部合格!广东珠海抽查5批次油墨产品
2021年第三季度,珠海市市场监督管理局组织开展了油墨产品质量监督抽查。本次共抽查了1家企业生产的5批...
-
浆系纸种再掀新一轮提价 涨幅达200-1500元/吨
继2月份多纸种接棒提价发起春季涨价攻势后,3月1日起,浆系纸种再掀新一轮的密集提价,涉及文化纸、白卡...
-
保定满城区开展纸制品行业专项检查 规范纸制品企业生产
为进一步规范纸制品企业生产经营行为,提升纸制品产业质量总体水平,近日,保定市满城区市场监督管理局...
-
2022年3月14日全国各地区纸厂废纸价格信息
华北地区:河北唐山乐亭张氏纸业,上调50元 吨。河北秦皇岛昌黎兴昌纸业,上调30元 吨。河北秦皇岛金...
-
包装材料、人工费等成本上升 台湾生活用纸涨价
由于原材料、物流、能源、环保以及包装材料、人工费等成本不断上升,台湾生活用纸生产企业已难以承受,...
-
上周木浆系纸品价格均有提涨 箱板纸价小幅下跌
本周轻工制造行业指数下跌4 57%, 跑输大盘0 35pct;造纸子板块下跌3 57%,跑赢大盘0 66pct 本周沪...
-
景兴纸业2021年营收同比增27.70% 净利同比增41.51%
3月14日,景兴纸业(002067)发布2021年度业绩快报公告,公告显示,2021年1-12月营业总收入为6,224,614,59...
-
1-2月全国快递业务收入1574.3亿 同比增长13.8%
3月14日,国家邮政局公布2022年2月邮政行业运行情况。数据显示,1-2月,全国快递服务企业业务量累计完成...
-
原料成本压力持续上升 浙江多家包装厂产品价格上涨3%
3月15日,多份包装企业涨价函从浙江嘉兴、湖州等地传来。在这些涨价函中,包装企业普遍表示,受疫情影响...
-
3月7日-13日生活用纸主要区域市场周度价格情况
上周(3月7—3月13日),河北、湖北、川渝、广西等生活用纸主要生产区域,纸浆及生活用纸市场价格情况汇总...
-
安徽出台“十四五”大气污染防治规划
安徽省生态环境厅日前印发《安徽省十四五大气污染防治规划》(以下简称《规划》)。《规划》要求,到2025...
-
原材料/燃料价格上涨 日本卫生纸、纸尿裤提价超10%
由于纸浆和能源等原材料 燃料价格上涨,物流成本、劳动力成本攀升以及环境措施成本增加,日本各造纸企...
-
新加坡超市将对塑料袋收费 至少5分新币/个
近日,永续发展与环境部长傅海燕在国会上宣布,从明年中旬起,三分之二新加坡超市都开始对一次性购物袋...
-
电子商务兴起 印度纸类包装行业发展趋势
随着市场越来越倾向于可持续性包装解决方案,预计未来几年对纸质包装的整体需求将增加。可持续性概念为...
-
2022年1-2月芬兰木材交易同比下滑20%
2022年1-2月,芬兰森林工业协会会员企业从私人森林采购木材累计达420万立方米,比去年同期下降20%。纸浆...
-
山东造纸行业深入实施“链长制”工作推进机制
造纸业作为基础原材料工业,在国民经济中占据重要地位。2021年,山东全省造纸行业深入实施链长制工作推...
-
包装原料价格波动再成热点 揭秘2021造纸上市企业业绩
近日,包装原料的价格波动再度成为热点,从废纸到原纸、到纸板,都传出了价格异动的消息。同时,在过去...
-
国家统计局:1-2月规上工业增加值同比实际增长7.5%
3月15日,国家统计局发布了2022年1-2月份工业生产主要数据。同日,国家统计局工业司副司长汤魏巍就1-2月...
-
2022年3月18日各地区各大纸厂废纸价格信息
华北地区:河北秦皇岛昌黎兴昌纸业,上调30元 吨。内蒙古昭宣纸业,下调20-30元 吨。华中地区:河南新...
-
江苏开展精准造林绿化 深入推进国土绿化和全民义务植树
江苏省今年着力实施精准绿化造林,深入推进国土绿化和全民义务植树。全省计划造林绿化20万亩,建设绿美...
-
正隆纸业员工返岗率超95% 预计今年营收同比增10%
人勤春来早,奋进正当时。位于厚街镇桥头第四工业区的正隆(广东)纸业有限公司(以下简称正隆纸业)自大年...
-
芬林芬宝劳马新锯材厂将启用自动装载生产线
芬林芬宝位于芬兰劳马的新锯材厂即将启用的自动装载生产线开创了锯材行业内的先河。自动装载指的是在无...
-
山东一小镇发展纸箱包装生产企业近百家 年产值11亿元
在山东省聊城市冠县北馆陶镇,返乡创业的孙凤湘在自家院子里把纸箱加工事业做得红红火火。他透露:从大...
-
打破性别“玻璃天花板” 95岁女院士是“她力量”最佳代言
鼓励女性打破“玻璃天花板” 95岁女院士就是“她力量”最佳代言 打破性别“玻璃天花板”,锤子...
-
河北辛集市暂停举办体育活动 关闭景区文娱场所
今天(11月8日)上午,河北省辛集市召开疫情防控新闻发布会,通报当地疫情防控最新情况。辛集市文体局...
-
红色文物·党史故事 “推出胜利”的小推车
“推出胜利”的小推车 李晓莉 在淮海战役纪念馆中,有一辆小推车格外引人注目,它就是淮海...
-
侵华日军南京大屠杀遇难同胞纪念馆闭馆
中新网南京11月8日电(记者 申冉)8日,侵华日军南京大屠杀遇难同胞纪念馆通报,该馆定于2021年11月1...
-
核酸采样:一位“点长”的50小时冲刺
11月4日晚上9点过,巴南区桥南社区盛世江南小区临时核酸采样点,市第七人民医院眼耳鼻喉科护士长张...
-
跑道结冰 哈尔滨机场关闭至9日12时
中新网哈尔滨11月8日电 (仇建 记者 史轶夫)哈尔滨太平国际机场8日发布消息,因跑道结冰,该机场...
-
北京地铁全面开启车内加热装置
地铁全面开启车内加热装置 本报讯(记者 李博)为做好降雪和强降温天气的应对工作,北京地铁合理...
-
黑河市多举措保障疫情期间残疾人等特殊群体生活稳定
中新网黑河11月8日电 (记者 史轶夫 王琳)8日,黑河市新冠肺炎疫情防控工作第十五场新闻发布会召...
-
北京丰台海淀两处管控区域解封 社区工作者收到“暖心礼物”
丰台海淀两处管控区域解封 居民和社区工作者收到“暖心礼物” 本报记者 孙颖 于丽爽 昨...
-
吉林四平一旅游项目违占耕地两千多亩 投资达10亿元
吉林四平一旅游项目违占两千多亩耕地被通报,投资达10亿元 近日,自然资源部通报了29宗农村乱占...
-
湖南双峰27名非法滞留缅北人员被惩戒:小孩回原籍入学
湖南双峰籍27名非法滞留缅北人员被惩戒:其小孩一律回原籍入学 为打击跨境电信诈骗犯罪,全国多...
-
江西新增本土“1+6” 上饶增一中风险地区
(抗击新冠肺炎)江西新增本土“1+6” 上饶增一中风险地区 中新网南昌11月8日电 (记者 吴鹏泉)...
-
江西上饶一地调整为中风险地区 实行封闭管理措施
中新网11月8日电 据江西省上饶市政府新闻办公室官方微博消息,上饶市新冠疫情防控应急指挥部8日发...
-
快递旺季遭遇雨雪天气 国家邮政局呼吁理解快递小哥
快递旺季遭遇雨雪天气 国家邮政局呼吁多理解和包容快递小哥 本报北京11月7日电(记者甘皙)国家...
-
高压、孤独,胆大、心细:手执焊枪的水下“蛙人”
高压、湿冷、孤独,胆大、心细、技艺高超—— 手执焊枪的水下“蛙人” 早上6时,伴随初升的朝...
-
掏粪掏了36年,他还在琢磨“新门道”
优化清掏路线、干活做到“三净”、总结技术诀窍,清掏工苏广林—— 掏粪掏了36年,他还在琢磨“...
-
内蒙古:二连浩特市新增1例本土确诊病例 额济纳旗累计治愈出院本土确诊病例76例
(抗击新冠肺炎)内蒙古:二连浩特市新增1例本土确诊病例 额济纳旗累计治愈出院本土确诊病例76例 ...
-
坚守在海拔4300多米的“天路保健医生”
中新网拉萨11月8日电(贡嘎来松)5日,青藏铁路格尔木至拉萨段达琼果站,海拔4327米。中铁十二局集团...
-
38年后,他终于知道了家在哪儿……
“我是谁,多大了,家在哪儿?”38年来,他总有这样一个心结被死死凝结,总为这样一句疑问而苦苦追...
-
受降雪影响 辽宁鞍山一农贸市场发生坍塌
8日早上6时左右,受连续强降雪影响,辽宁省鞍山市千山区大屯镇农贸市场发生坍塌,多台车辆被砸。 ...
-
中国舞蹈家协会顶尖教师巡回课堂(重庆站)举办
中新网北京11月8日电 (记者 高凯)由中国舞蹈家协会主办,中国文联舞蹈艺术中心、重庆市舞蹈家协会...
-
边城战“疫”:夜晚七点的暂停键
11月4日晚上7点,是中俄边境城市黑河一个再平凡不过的抗疫时刻。 如果在这一刻按下时间的暂停键...
-
风雪高原战“疫”长卷 寒潮下的西宁疫情防控观察
大风7级,大雪纷扬,最高气温只有-5℃! 这是青海省西宁市开启全城全员首轮核酸检测的天气。 ...
-
拟音师:“雕刻”声音的人【三百六十行】
三百六十行 拟音师:“雕刻”声音的人 闭上眼,90后赵洪泽有时甚至可以通过走路的声音,来判...
-
“双减”之后 中小学教师资格考试为何依然火爆
聚焦 “双减”之后,中小学教师资格考试为何依然火爆 近日,2021年下半年中小学教师资格考试(...
-
大数据助力贫困生成长
探索 大数据助力贫困生成长大数据画像能为贫困生成长带来什么 今年9月,云南省楚雄彝族自治州...
X 关闭
X 关闭


