领导看了给你加薪!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 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座! 新视野
- 荣耀90首销 2499元入手2亿像素主摄
- 十年前,他打破了那扇“门”——AI视频起底美国“监听帝国”|时快讯
- 跃岭股份6月7日盘中涨幅达5% 世界播报
- 当前速看:每经热评|AI大模型“秒写”高考作文,我们需要警惕技术的误导
- 环球快看点丨读了红楼梦的心得体会 说说读要红楼梦的心得体会
- 涨停雷达:PCB个股异动 金禄电子触及涨停
- 世界球精选!个人特点及特长500字(个人特点及特长)
- 如何在理财「震荡纪元」活下来
- 外窗设铁栅栏、施工区违规住人……重大风险隐患专项排查整治开展
- 贵州电网多举措保高考用电无忧
- 良庄矿业公司开展 “计生家庭意外伤害保险”宣传工作
- 全球观天下!半决赛决出2席!德约科维奇3-1逆转,将遇头号种子!5号种子0-3
- 记者:别无选择,梅西需要耐心等待,球迷:巴萨耍流氓
- 每日看点!purse和wallet的区别_purse
- 比率计算公式大全图解_比率计算公式
- 世界观点:伴娘堵门要红包被伴郎连人带门踹飞 隔着屏幕都觉得疼
- 广东省肇庆市2023-06-04 18:12发布高温黄色预警
- 中超大连人VS山东泰山图片分享,阎相闯PK王大雷,国足教练组观战_当前热讯
- 大便不成形但不是拉稀吃什么药_大便不成形但不是拉稀|当前热文
- 卢员外是什么官_卢员外是什么梗卢卡库为啥叫卢员外
- 集思吧调查网官网_集思吧官网
- oppo手机如何显示时间|全球新要闻
- 最佳婚姻解说_最佳婚姻 头条焦点
- 世界银行上调中国2023年经济增速预期至5.6%_天天热头条
- 手机电影资源下载_3gp手机电影下载网 全球速看料
- 伊朗驻沙特使领馆将正式重新开放 中东国家期盼和解与发展 全球快看
- 逾20家上市公司披露减持计划 美的集团拟大幅减仓埃夫特股份
- 100万人打出9.6,它比《漫长的季节》后劲更大 全球观焦点
- 水产品和海产品有什么区别
- 【聚看点】6月6日主题复盘 | 房地产强势反弹,液冷方向迎催化
- 实时:惠普打印机usb电脑识别不出来_惠普打印机找不到设备usb连接
- 【速看料】倒了两个!仍然要求信心决心耐心!
- 天天日报丨汇盈软件官网_汇盈贷
- 净息差跌破1.8%“警戒线”核心一级资本充足率排名A股城商行末位,杭州银行拟发100亿金融债券充实资金来源...|快看
- 科技观察|推特新CEO火速上任!踩着高跟鞋的“女超人”还能稳走上坡路吗?
- 陇东学院改名公告_陇东学院吧
- 乌兰图雅和乌兰托娅谁最火_乌兰图雅和乌兰托娅
- ps的边缘调整怎么和图层融合_ps中如何让边缘与背景融合
- 【新视野】6.6晚间黄金原油走势分析及操作思路
- 红酒行业市场发展如何?红酒行业市场发展现状分析_即时看
- 【报资讯】又是6月闪崩!尚纬股份发生了什么?
- 李宗伟与妻子分居十年,花千万抗癌+电疗喉咙溃烂,妻子以泪洗面
- 神舟有新知|神十五乘组返回独家纪实 天天百事通
- 世界时讯:AI生成马斯克婴儿照疯传 本人幽默回应:我想我可能吃太多了!
- 环球关注:苹果推出 15 英寸 MacBook Air 笔记本,起售价 1299 美元
- 世界微资讯!广西:房企获预售许可前不得销售商品房
- “赛博坦”来了!AI进军基金业,人类饭碗要悬了?|全球关注
- 今日芒种!北京这里的小麦成熟了,蓝天下风吹麦浪,美不胜收
- 2023年高考天气出炉 我国大部天气舒适 全球时快讯
- 矿产真正的龙头股票看这4只!(6/5)_天天热资讯
- 加大支持力度 今年涉农贷款增长创新高 快资讯
- 当前关注:头狼:黄金多空28连胜,1955继续干多
- 青年旅社和民宿的区别(青年旅社什么意思青旅) 环球观焦点
- 俄媒:乌防长称无法在今夏可能的反攻中用上F-16
- 格列兹曼与梅西、德布劳内并列本赛季五大联赛助攻榜首位-环球速读
- 天天日报丨我国首个跨省流域生态补偿提档升级
- 2016款雪佛兰Malibu将完全与众不同 由广泛的A至Z大修提供
- 愿者上钩纸包鱼做法?鱼是炸的还是烤的?
- 热讯:花豹和猎豹谁厉害(花豹和猎豹的区别)
- 环球快讯:找男朋友大几岁合适,夫妻更佳年龄差
- 全球快消息!绿豆怎样做才好吃_绿豆怎么做好吃家常做法拜托
- 2021温暖句子_温馨简短的句子大全 很短却温暖的句子-每日看点
- 世界新消息丨2023中山市机关第二幼儿园招生简章
- 魅族销量火爆!新配色受热捧,颜控终将应有尽有|头条焦点
- 天天热议:坚决扭转片面应试教育倾向:基础教育课程教学改革部署五项行动
- 2023初三复习计划表 正确的初三复习方式-焦点速讯
- 热血三国史诗任务多久结束(热血三国 史诗任务)
- 网贷逾期8个月的有钱花上征信吗
- 全球看热讯:凯龙高科(300912)6月5日主力资金净卖出438.03万元
- 杭州这个小区积极推进二次供水 进一步提升居民用水水质
- 全球简讯:护航“三夏”丨“三夏”时节麦收忙 劳模先进来帮忙
- 全球快资讯:如何发布招聘信息吸引人_如何发布招聘信息
- dreammail接收所有邮件方法-天天微头条
- 天涯经济论坛神贴_天涯经济论坛
- 贷款还不上多久可以申请停息挂账?银行附营业务停息挂账什么意思?-世界观焦点_视焦点讯
- 大公司动态:16家钢厂涨价,西宁特钢正开展重组工作
- 网友分享20年前拍的林志颖刘亦菲合照 男帅女美颜值盛宴
- 上海迪士尼全线门票涨价,特别高峰日799元!开园7年已涨价4次
- 要闻速递:劳动者不同意调岗可以要求赔偿?公司可以调岗的情形
- 宏英智能最新公告:2022年度权益分派10派2元 股权登记日为6月8日_全球聚焦
- 来的时候是国王,走的时候是传奇再见,上帝41岁岁...-今日精选
- 宣恩县气象台发布暴雨橙色预警【II级/严重】【2023-06-04】
- 宁波九龙湖开元度假村_广州九龙湖度假村_全球热推荐
- CK3 刀鱼作弊试用版|世界看点
- 旌德论坛官网怎么登录_旌德论坛_每日速讯
- 荀是怎么读_荀怎么读 荀的读音简介介绍-当前资讯
- 神舟十五号载人飞船返回舱成功着陆 神舟十五号载人飞行任务取得圆满成功
- 今日快讯:安居镇志愿者服务队
- 机器人行业重大事项点评:英伟达发布移动机器人平台 科技公司进军机器人产业趋势持续强化
- 【当前热闻】微软宣布放弃Win10后出现意外一幕:用户变得更多了!
- 别人坐过的热凳子不能坐?有没有传染疾病的风险?专家释疑
- 高考房迎来预订高峰 “985”“211”房号受青睐
- 胸痛中心建设已覆盖90%区、县 推行心衰患者分级诊疗和双向转诊 资讯
- 发票办公用品属于什么种类_办公用品种类及单价-世界报资讯
- 宜居宜商!仙霞新村街道喜获两项新荣誉 今亮点
- 中国星辰 | 210秒回顾航天英雄凯旋回家之路!|天天热头条
- 焦点短讯!洪都拉斯总统宣布任命首任驻华大使
- 热推荐:山海相伴 第二届福建太姥山洞道穿越挑战赛落幕
- 环球微头条丨“文化润疆”中的艺术力量
X 关闭
行业规章
X 关闭