领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座! 环球讯息
2023-06-08 04:18:47来源:博客园
“接口自动化测试是指通过编写代码或使用工具,模拟用户发送请求,验证接口是否符合设计规范和功能需求的过程。”
如何用 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
关键词:
责任编辑:hnmd003
精彩推送
- 领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座! 环球讯息
- 天天播报:商务预报:5月29日至6月4日生产资料价格略有下降
- 亚通精工:公司汽车零部件业务主要是为整车厂提供冲压及焊接零部件,主要客户均为知名大型整车厂,是上汽通用、上汽集团、理想汽车、中国重汽、中国一汽、北汽福田等客户的一级供应商
- 【期市盘面】甲醇跌超3%位居跌幅榜首!一品种主力资金流入近6亿
- 环球热点评!彬州:又到樱桃正红时
- 北京居住区新能源车充电试点!服务费将不高于0.5元
- 当前简讯:第七届丝绸之路国际博览会暨中国东西部合作与投资贸易洽谈会时间_第七届丝绸之路国际电影节以什么为主题
- 快播:新概念武器电磁枪_新概念武器指的是
- 全球快播:中华文明为何能延绵5000年未出现中断?快到“国家书房”一探究竟
- 印度光伏行业2023年第一季度投资同比下降171%-当前速读
- 金百泽:公司未直接向英伟达供货 环球百事通
- 东星医疗:吻合器产品目标海外市场主要集中在南美、中东以及欧洲三大区域|天天速读
- 前5个月我国一般贸易进出口11万亿元 同比增长7%
- 景津装备:公司产品可用于养殖行业的屠宰、粪便污水及沼渣沼液处理等-全球新视野
- 佳木斯领导调研地面站项目 播报
- 300N.m超大扭矩长安汽车,UNI-T眨眼间释放驾趣本能
- 山东省邮政管理局部署开展全省寄递安全专项行动 环球短讯
- 白蚁防治方法_白蚁如何防治
- 人才流失对港经济影响严重!很难看到的港澳荣景,这个夏天有点冷 每日速讯
- 股票带r是什么意思_聚看点
- 天天观天下!山西潞安工程公司:充填开采提速提效 日充填量创新高
- 今日热门!生活污染源_关于生活污染源介绍
- Lunaz展示其电动阿斯顿马丁DB6EV_天天微头条
- 世界看点:国科微2亿元于杭州新设子公司 含集成电路销售业务
- 热资讯!透视“A拆A”上市案例:十家市值已达母公司50%以上 战略性新兴产业为重要支撑
- 全球快看:Q1全球智能手机产量仅2.5亿部 创近十年来同期新低
- 民生银行天津分行成功堵截涉诈资金转移风险事件
- 本川智能(300964.SZ)监事郑小春累计减持3万股 环球看热讯
- 当前短讯!金雪炫最近 金雪炫乳
- 荣盛发展回复年报问询函:短期内销售不景气,公司存一定偿债压力
- 基建股今日回暖 中国交建及中国中铁均涨逾3%
- 《街头霸王6》全球销量突破百万套 系列销量超5千万套
- 每日短讯:BBA车主的下一台车为什么不能是蔚来?比如ES6? | 吴佩频道
- 焦点观察:广州启动一级保供电护航高考,25辆应急发电车进驻考场
- 焦点速讯:天奥电子:中电十所是公司的控股股东,中电天奥是中国电科的全资子公司
- 【收评】菜油日内上涨0.10% 机构称油脂反弹乏力 焦点短讯
- 黑龙江2022年中级经济师(补考)合格证书领取的通知
- 当前短讯!深水规院06月07日主力资金大幅流出
- 【收评】橡胶日内上涨1.94% 机构称橡胶基本面缺乏指引 宏观面主导胶价走势|聚看点
- 最高人民法院关于美国法院未通过外交途径迳直将离婚判决书寄给我人民法院如何处理的批复_对于最高人民法院关于美国法院未通过外交途径迳直将离婚判决书寄给我人民法院如何处理的批复简单介绍 播报
- [老鹰表达力]总有人会挑你的刺_当前消息
- 创元科技:接受中信建投证券调研_天天播报
- 深交所:腾信创新终止上市 6月15日起进入退市整理期
- 大宗交易:富士达成交198.56万元,折价30.23%(06-07)
- 天天头条:股票带r是什么意思
- 关注“三夏”丨定州多措并举确保“三夏”生产高效有序
- 长周期看,只有成长性才是股市投资的精髓 全球热闻
- 阿优之兔智来了(阿优之兔智来)
- 每经操盘必知(下午版)丨创业板指跌1.61% AI概念股逆势大涨;长春高新回应股价跌停;中国消费者协会:警惕培训班退费骗局|天天看点
- 手机银行系统故障屡发的背后:大手笔投入 但使用痛点仍存-每日头条
- 西力科技:中标1.26亿元国家电网电能表采购项目 全球资讯
- 高考首日,河北省公安交警驻点全力护航-报资讯
- 【环球新视野】坐飞机晕机吃什么药_坐飞机少吃豆类还是淡茶
- 环球精选!金塔县游泳馆即将开馆试运行
- 红外测温仪_红外 全球播资讯
- 天天速讯:英雄联盟发条魔灵出装_英雄联盟发条魔灵的出装方式解析
- 主要矛盾和次要矛盾的方法论_主要矛盾和次要矛盾
- 天舟五号货运飞船完成与空间站组合体再次交会对接
- 证券行情的观测与分析实验报告-证券行情分析实验总结_播报
- *ST和科:截止2023年5月17日,公司在手订单不含税9178.04万元,上述在手订单均未确认收入
- 兴业证券:给予龙湖集团(00960.HK)“买入”评级 目标价24.00港元
- 【环球速看料】下属公司累计被冻结5个银行账户,海南椰岛今日股价开盘即下跌
- 电子后视镜新国标将于7月实施 行业市场规模有望超60亿|要闻速递
- 华立股份06月07日主力资金大幅流出
- 百洋医药:公司目前在青岛有约10家药店,暂无拓展开店的计划|天天报资讯
- 国恩股份:浙江一塑2023年1季度经营状况良好
- 高测股份:目前公司硅片切割加工服务硅片价格保持稳定-天天热资讯
- 【世界速看料】长春高新回应股价跌停:公司经营一切正常 集采对业绩影响“中性偏好”
- 8日零时,成都将启动臭氧重污染天气黄色预警 世界速读
- 【收评】橡胶日内上涨1.94% 机构称橡胶基本面缺乏指引 宏观面主导胶价走势 世界热头条
- 观天下!武汉数字经济总量占全市GDP超四成
- 寒锐钴业:2022年度权益分派10派1.5元
- 天天微速讯:西藏天路(600326)6月7日主力资金净买入1240.44万元
- 天天快资讯丨汽车芯片「 舆芯半导体」完成近亿元天使轮融资,临芯资本领投
- 精彩看点:标致全新内饰设计曝光!失望的是,法国人居然也用上了一体式大屏
- 我和狗狗的十个约定在线观看(我和狗狗的十个约定)-世界时讯
- 翔翔熊猫(翔翔)
- 环球快资讯:天迈科技拟定增募资不超1.15亿 首季及去年前年均亏损
- 当前视讯!怀念Viper?EDG不敌BLG惨遭两连败,下路皆为突破口
- 借云之力赋能企业出海 SHOPLINE如何让电商玩家跑在“快车道”?-视讯
- 今日视点:*ST越博与财务总监徐方伟收警示函 业绩预告两度不准
- 高考首日:场内考生从容应考,场外家长翘首以盼
- 天天新消息丨老凤祥回收黄金多少钱一克(2023年6月7日)
- 环球热讯:一朝被蛇咬十年怕井绳?与全球央行背道而驰 韩国央行“冷落”黄金“青睐”美元
- 1.4 亿年前的牙齿揭示了古代英国棘龙的多样性 环球热门
- 动力源(600405)6月7日主力资金净卖出907.76万元
- 今年广东738525名考生报名参加夏季高考 一名盲人考生使用盲文试卷
- 全球讯息:多家车企5月新能源车销量翻番 广汽集团销量同比增长124.79%
- 天源环保:污泥碳化和生物质秸秆碳化研发项目采用了热储能技术
- 孟晚舟现身上海!华为“根技术”发力国产数据库-焦点
- 安卓装机必备!这款下载神器功能齐全免费不限速,比迅雷还好用
- 百事通!阿优之兔智来了(阿优之兔智来)
- 世界热讯:长周期看,只有成长性才是股市投资的精髓
- 全球聚焦:端午假期前一天北京至淄博高铁一票难求
- 花旗:2025年铜均价有望升至1.2万美元,现在是布局铜金属的良机-天天时快讯
- 如何应对生成式大模型「双刃剑」?之江实验室发布《生成式大模型安全与隐私白皮书》
- 平安证券:拿地收缩聚焦,热度分化加剧 每日速讯
- 新消费、新场景、新动能!2023上海消费市场创新大会今日举办
- 今日要闻!港交所:未来内地投资者或可经“港股通”买卖人民币柜台证券
- 警心暖童心|环球最资讯