当前快播:领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座!
2023-06-07 20:38:26 来源:博客园
“接口自动化测试是指通过编写代码或使用工具,模拟用户发送请求,验证接口是否符合设计规范和功能需求的过程。”
(相关资料图)
如何用 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
标签:
相关阅读
- (2023-06-07)当前快播:领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座!
- (2023-06-07)发生可燃气体火灾时(是利用可燃气体同氧气混合燃烧所产生火焰分割材料的热切割) 环球视点
- (2023-06-07)“绵阳”三台县委统战部召开信息宣传暨实践理论创新工作专题会
- (2023-06-07)我国一季度汽车出口107万辆 还带火了这个行业 天天热门
- (2023-06-07)Lunaz展示其电动阿斯顿马丁DB6EV_焦点播报
- (2023-06-07)减轻房租压力!在济南租房可以享受这些公积金利好 每日热讯
热点推荐
- (2023-06-07)当前快播:领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座!
- (2023-06-07)浑身解数的意思(浑身解数)
- (2023-06-07)发生可燃气体火灾时(是利用可燃气体同氧气混合燃烧所产生火焰分割材料的热切割) 环球视点
- (2023-06-07)手机多人生存联机手游推荐 多人一起组队开启求生之旅
- (2023-06-07)“绵阳”三台县委统战部召开信息宣传暨实践理论创新工作专题会
- (2023-06-07)天天热讯:金百泽:研发了400G光模块PCB关键工艺技术
- (2023-06-07)我国一季度汽车出口107万辆 还带火了这个行业 天天热门
- (2023-06-07)十恶是哪十恶_十善是哪十善-环球速递
- (2023-06-07)Lunaz展示其电动阿斯顿马丁DB6EV_焦点播报
- (2023-06-07)热文:三亚旅文集团8亿元中期票据将付息 利率4.27%
- (2023-06-07)减轻房租压力!在济南租房可以享受这些公积金利好 每日热讯
- (2023-06-07)繁星 繁|世界报资讯
- (2023-06-07)世界聚焦:【收评】白糖日内上涨1.48% 机构称白糖短期内外出现劈叉
- (2023-06-07)深水规院06月07日主力资金大幅流出-时讯
- (2023-06-07)北京电信多条千兆专线护航通信展览会 全力做好通信保障服务
- (2023-06-07)环球快看点丨未来几年,3个因素将推动国内高品质医药纸盒包装市场增长
- (2023-06-07)世界看热讯:硕贝德:子公司拟2.55亿元投建新能源线束生产项目
- (2023-06-07)广西首张六堡茶制作专项能力证书发放
- (2023-06-07)天天热推荐:凌海市气象局发布雷雨大风黄色预警【Ⅲ级/较重】【2023-06-07】
- (2023-06-07)贝莱德中国区负责人汤晓东离职 陈蕙兰将接管在岸业务 世界看热讯
- (2023-06-07)6月7日西北地区地炼汽柴油报价暂稳 时讯
- (2023-06-07)大连:多措并举 保驾护航 助力滨城莘莘学子逐梦高考|焦点观察
- (2023-06-07)截至6月4日美国冬小麦抽穗率为82%
- (2023-06-07)华如科技:目前公司依托VR/AR/MR等技术 为军事模拟训练提供了多款应用产品
- (2023-06-07)精研科技:公司产品可应用于智能手机、可穿戴设备等消费电子领域 世界快报
- (2023-06-07)多只地产股面临退市,哪些基金还有持股?亏了多少?_滚动
- (2023-06-07)合力泰:公司不存在恶意拒付情形|天天通讯
- (2023-06-07)快看:雅创电子:公司的自研IC产品汽车后视镜折叠IC已实现批量出货
- (2023-06-07)全球快消息!亚联发展:目前公司未参与《深圳市加快推动人工智能高质量发展高水平应用行动方案(2023—2024年)》的相关建设
- (2023-06-07)[大行评级]国信证券:给予金山软件(03888.HK)“买入”评级 目标价37.00至39.30港元|世界今热点
- (2023-06-07)道德产生的客观条件是社会关系_道德产生的客观条件
- (2023-06-07)WhatsApp使用“故事”来缓解用户的隐私担忧 今头条
- (2023-06-07)每日消息!NBA午报|湖人不给浓眉长约 利拉德施压球队 胖虎即将当爹
- (2023-06-07)17岁丹麦王子约会意大利公主,王储妃妈妈很满意,网友也觉得般配_全球焦点
- (2023-06-07)世界速看:海关总署:前5个月民营企业进出口总额同比增长13.1%
- (2023-06-07)杰创智能:公司主营业务暂未直接涉及电子身份证领域 动态
- (2023-06-07)全球快消息!宏盛股份:公司有风力发电液冷技术、储能及动力电池液冷技术,其中储能及动力电池液冷技术正在开发中
- (2023-06-07)强化现场监督 全力护航高考
- (2023-06-07)农发行新疆分行备足138亿元资金待夏粮归仓_快资讯
- (2023-06-07)世界热头条丨第八届中国青梅节在安徽芜湖市繁昌区举行
- (2023-06-07)新疆阿瓦提县举办2023年“六五世界环境日”主题宣传活动 环球速看
- (2023-06-07)加强风险管理 推进数字化转型-天天快资讯
- (2023-06-07)莱斯信息:国内民航空管系统龙头 核心技术打破国际垄断-天天关注
- (2023-06-07)“股神”巴菲特再出手加码这只股!这个“超级赛道”机会又来了? 新资讯
- (2023-06-07)环球热头条丨广东:住房政策向多子女家庭倾斜
- (2023-06-07)热头条丨要不是入住了,我压根察觉不到的想10个装修坑,装修时就得避开
- (2023-06-07)双色球中了怎样领奖(双色球中奖后怎么领奖金)
- (2023-06-07)天天短讯!930管家婆精选246(30990管家婆高手论坛)
- (2023-06-07)西部水泥(02233)委任凡展为非执行董事|焦点速看
- (2023-06-07)6月7日三元生物现1笔折价20.38%的大宗交易 合计成交3002.22万元|环球新资讯
- (2023-06-07)物资分公司“三着力”提升信访法治宣传质效_天天精选
- (2023-06-07)王欣瑜首进大满贯女双8强
- (2023-06-07)今日最新!全球即时:停息挂账储蓄卡还能用吗?停息挂账对自己有什么影响?
- (2023-06-07)环球播报:伊朗国产高超音速导弹首次亮相
- (2023-06-07)今日热讯:民生加银智造2025增聘基金经理李君海 去年跌27.5%
- (2023-06-07)【当前热闻】港股异动 | 海昌海洋公园(02255)一度跌超33% 北水连续10日减仓 公司回应称经营一切正常
- (2023-06-07)今日快讯:百融云创荣登“中国信创企业百强榜”
- (2023-06-07)天天速讯:大豪科技:公司在印度、巴基斯坦、越南、孟加拉建立了服务网点
- (2023-06-07)长盈精密:公司现有业务不涉及脑机接口领域 焦点精选
- (2023-06-07)精研科技:江苏精研科技股份有限公司持有江苏精研热能管理有限公司82%的股权 当前播报
- (2023-06-07)德展健康:公司司美格鲁肽项目已完成100升规模的工艺测试
- (2023-06-07)什么是Project xCloud 您需要知道的一切
- (2023-06-07)听云南|临沧玉龙湖 城市灯光水景里的一张靓丽名片 环球观察
- (2023-06-07)江苏出台14条措施推动外贸稳规模优结构
- (2023-06-07)环球最资讯丨金桥信息06月07日主力资金大幅流出
- (2023-06-07)城市传媒:公司和上海爱美联合出品电影《好像也没那么热血沸腾》 全球快看点
- (2023-06-07)毕业季买什么手机划算?OPPO Find X6和小折叠旗舰大让利,618福利拉满
- (2023-06-07)北京财贸职业学院地址(北京财贸职业学院)
- (2023-06-07)世界短讯!2023年房屋征收,拆迁补偿协商处理,这5点要注意
- (2023-06-07)【播资讯】【清一色午报】三大股指涨跌不一,宁德时代跌超5%,AI概念股再迎集体反弹
- (2023-06-07)全球时讯:理想生活的文案
- (2023-06-07)关于后来的文案
- (2023-06-07)氢气对人体的十大好处 创辉(氢气对人体的作用好处与坏处)|环球微头条
- (2023-06-07)某房企四大名著烂尾项目!
- (2023-06-07)2023年6月7日安徽省环氧氯丙烷价格最新行情预测
- (2023-06-07)天天短讯!塞尔达传说王国之泪你是萨派还是科派任务怎么做[多图]
- (2023-06-07)经济观察:中国5G商用四周年,交出怎样的成绩单?
- (2023-06-07)焦点消息!再传集采消息,长春高新午后跌停 浙江省药械采购平台回应每经:5月31日确发过第四批药品集采文件
- (2023-06-07)聚焦IPO丨凯普林IPO前夕遭投资人“弃投”,实控人或成股权激励最大“赢家”
- (2023-06-07)长盈精密:公司机器人业务主要应用于鞋服制造、食品包装等领域
- (2023-06-07)双一科技:新能源大巴车内外饰件产品的客户主要为比亚迪和宇通客车-全球时快讯
- (2023-06-07)放榜啦!以时光沉淀专业 中欧基金荣获“明星基金”三项大奖 天天观焦点
- (2023-06-07)翔腾新材:公司已通过日东光学的合格供应商认证-世界视点
- (2023-06-07)未央今日播报:16省份公布去年平均工资 红杉全球三大市场宣布各自独立 每日观点
- (2023-06-07)读书随笔作文集锦九篇_每日消息
- (2023-06-07)中越国际联运冷链运输正式启动_即时看
- (2023-06-07)天天头条:中天精装06月07日主力资金大幅流出
- (2023-06-07)一寸证件照尺寸大小比例_一寸证件照尺寸 全球今头条
- (2023-06-07)【新视野】云上VPC网络规划实战
- (2023-06-07)焦点短讯!2023年福建企业职工退休金怎么算?福建退休工资2023上涨多少?
- (2023-06-07)今日成交额最高的信用债为“23安交01”|环球快看
- (2023-06-07)环球热点评!23天成租赁SCP010票面利率为2.1200%
- (2023-06-07)长高电新:近期没有获得90亿订单的情形_环球快资讯
- (2023-06-07)国网天津滨海公司:全力保障高考电力可靠供应-每日热点
- (2023-06-07)【环球报资讯】让他们先考!淄博烧烤为高考停烤4天
- (2023-06-07)2023城镇居民医疗保险报销范围是什么?最新标准如下
- (2023-06-07)世界微头条丨65岁老人医保住院报销比例是多少?2023年65岁住院医保报销新规
- (2023-06-07)世界观焦点:大义凛然形容谁_大义凛然可以形容哪些人
- (2023-06-07)中国生物:新型冠状病毒mRNA疫苗Ⅱ期临床试验启动
- (2023-06-07)港股铁路公路股上涨,广深铁路涨超16%