领导看了给你加薪!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
标签:
相关推荐:
最新新闻:
- 当前通讯!GaussDB(DWS)查询过滤器原理与应用
- 【环球新要闻】天宫TV | “圆梦乘组”与“博士乘组”梦幻联动!
- 端午假期前一天北京至淄博高铁一票难求 每日讯息
- 3辆全新特斯拉超跑竟被遗弃中国码头13年!原车主身份不简单
- 2023年房屋征收,拆迁补偿协商处理,这5点要注意
- 深南电A:下属南山热电厂已进行虚拟电厂备案,暂未实质性运行
- 天天观焦点:11年吉林男子欠银行199元,8年后猛增到1.5万,行长:正常涨利息
- 英国5月房价同比下跌1%,为11年来首次年率下跌-全球简讯
- 全球球精选!新巨丰拟收购纷美包装股权,深交所下发重组问询函
- 领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座!
- 淄博在全省首推“无还本续贷”创业担保贷款,企业无需还本也可续贷|全球观速讯
- 摩通:放宽一线城市限购料对内房销售影响轻微 头条
- 世界消息!手机问题:vivoS9e怎么隐藏应用
- 某房企四大名著烂尾项目!
- 手机问题:vivoS9e怎么设置门禁卡_前沿资讯
- 【天天聚看点】海关总署:前5个月民营企业进出口总额同比增长13.1%
- 环球快看:数列收敛的几何意义是什么_数列收敛的定义
- 俄罗斯最冷的地方是奥伊米亚康_俄罗斯最冷的地方
- 热点在线丨刚柔并济 软硬兼施_软硬兼施的意思
- Reddit现在原生支持图像库 这是它的工作方式_天天快播
- 哪两项著作被认为是荷兰创作的_哪两项著作被认为是荷马创作的
- 送子由使契丹阅读答案_送子由使契丹翻译及赏析
- 3dmax玻璃材质如何设置_教你如何快速设置 当前关注
- 信濠光电:目前,公司的3D防护玻璃主要应用于智能手机产品
- 今日要闻!洛克王国波塞冬平民过法_洛克王国波塞冬之蛋可以孵出什么
- 雪中悍刀行百度百科女主_雪中悍刀行百度百科 环球播资讯
- 和林微纳:NVIDIA为公司重要海外客户 公司与NVIDIA业务稳定
- 迪迦奥特曼被掐住脖子_迧迦奥特曼被捏jj
- 杰创智能:公司暂无人脑工程相关技术-全球新动态
- 桂陵之战马陵之战长平之战的时间_桂陵之战马陵之战长平之战
- 何首乌图片大全大图盆景_何首乌图片 天天热头条
- 洛克王国波塞冬之蛋能孵出什么 怎么得_4399洛克王国_洛克王国波塞冬蛋能孵出什么宠物
- 当前热讯:河钢集团6月硅锰首轮询盘6850元/吨
- 滨江集团:今年截至目前交付的项目已超过10个 每日头条
- 笔记本电脑进入休眠状态怎么办_电脑进入休眠状态怎么办 今日快讯
- 深交所:腾信创新终止上市 6月15日起进入退市整理期_天天微动态
- 如何修改wifi密码详细步骤_今日热搜
- 上海市消保委呼吁制定细化外卖包装收费规则 把选择权交给消费者
- 优博讯:公司暂未与英伟达有直接合作
- 当前速讯:2023年房屋征收,拆迁补偿协商处理,这5点要注意
- 新巨丰拟收购纷美包装股权,深交所下发重组问询函
- 靖江“智慧”养老开启新模式
- 今日成交额最高的信用债为“23安交01”_视讯
- 纽威股份:纽威集团拟减持不超2%公司股份 时讯
- 当前关注:信濠光电:公司尚未涉及光模块CPO业务
- 天源环保:与华中科大正在研发的污泥碳化和生物质秸秆碳化研发项目采用了热储能技术_看点
- 苏州与北京银行签署战略合作协议 北京银行苏州分行揭牌|全球通讯
- 北京开启不动产登记“跨省通办”新模式
- 如何应对生成式大模型「双刃剑」?之江实验室发布《生成式大模型安全与隐私白皮书》
- 世界新消息丨国内商品期市日间盘多数收跌 甲醇跌超3%
- 如何应对生成式大模型「双刃剑」?之江实验室发布《生成式大模型安全与隐私白皮书》
- 护航高考丨逐梦追光 听见青春
- 意法半导体携手三安光电,推进中国碳化硅生态系统发展
- 【全球快播报】今日79股涨停 主要集中在电子、传媒等行业
- 国金证券:能拿好地且快速去化的房企更加受益
- 信达证券:欧美充电桩市场步入快速发展期 市场空间大
- 安溪以优秀文艺宣传贯彻党的二十大精神 快报
- 「基层工作者」洛江区双阳街道:以真心真情服务民情
- 华工科技涨停-全球短讯
- 信达证券:欧美充电桩市场步入快速发展期 市场空间大_全球快消息
- 焦点速递!雷雨大风+冰雹+龙卷!黑龙江省发布龙卷预警
- 【世界时快讯】江苏黄沙港特大桥顺利合龙 预计6月底完工
- 赴考满分!送考满分!高考首日,好的故事开头
- 今天高考返程和赴考时段广州有雷阵雨 世界快看
- 焦点观察:和胜股份:在项目研发前沿领域一直与宁德时代深度合作
- 收盘丨A股三大指数走势分化,创业板指跌1.61% 前沿热点
- 世界通讯!外交部:对卡霍夫卡水电站堤坝被破坏表示严重关切
- 塔克拉玛干沙漠腹地最大集中式光伏电站正式并网发电
- 6月7日东营益盛醋酸丁酯报价下调 每日热文
- 荷兰警方在泽兰省截获多批可卡因
- 美国波音787型“梦想客机”因生产缺陷将再次延迟交付
- 全球观点:吉尔吉斯斯坦安全部门拘留30余名组织骚乱嫌疑人
- 中美军事部门对话暂时没有恢复,美方呼吁沟通,外交部回应
- 【全球独家】中国芯片稳步推进,美国芯片行业已现颓势,韩荷认清了现实
- 艾迈斯欧司朗推出适用于舱内传感的新款红外VCSEL发射器,新增可靠的内置人眼安全功能