世界播报:领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座!

2023-06-07 15:53:59 来源: 博客园

接口自动化测试是指通过编写代码或使用工具,模拟用户发送请求,验证接口是否符合设计规范和功能需求的过程。

如何用 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 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座!

“& 160;接口自动化测试是指通过编写代码或使用工具,模拟用户发送请求

06-07 15:53:59

合伙抓鵟10只 最高判6年,砍5株珙桐也被判刑

原标题:世界环境日来临之际,四川多地发布司法保护生态环境典型案例(

06-07 14:59:21

国网重庆铜梁供电以“党建+度夏保供”迎战夏峰_全球今头条

中国能源新闻网是由国家能源局主管,中国电力报社、中电传媒股份有限公

06-07 13:50:35

【天天聚看点】2023山西高考外语口试6月10日报名

2023年我省普通高校招生外语口试采取网上报名、网上缴费的方式,考生可

06-07 12:34:34

苹果Vision_Pro价格公布后股价大跌 市值蒸发6000亿 热闻

快科技6月6日消息,苹果在今天凌晨举行了开发者大会,同时带来了一款全

06-07 10:14:23

中铁十六局集团有限公司董梁_中铁十六局集团有限公司

1、待遇还可以,我是交通大学出来的,很多土木专业的人都去了中铁.修

06-07 09:17:34

【速看料】逾20家上市公司披露减持计划 美的集团拟大幅减仓埃夫特股份

据《每日经济新闻》记者不完全统计,6月6日晚,沪深两市合计有约22家上

06-07 08:00:54

天趣网络_天趣网络

当前大家对于天趣网络都是颇为感兴趣的,大家都想要了解一下天趣网络,

06-07 06:51:05

全球实时:绿城管理控股(09979):翁美仪获委任为联席公司秘书及法律程序文件代理人

绿城管理控股(09979)发布公告,翁美仪已获委任为联席公司秘书及法律程

06-07 05:30:34

问道宠物飞升昏睡鼠怎么过_问道宠物飞升 焦点热门

1、一、概述人物飞升之后可以接到宠物飞升任务,该任务可以让宠物突破1

06-07 04:36:03

杭州:力量与技巧的碰撞 全国U17国际式摔跤锦标赛落幕

杭州:力量与技巧的碰撞全国U17国际式摔跤锦标赛落幕潮新闻客户端记者

06-07 03:24:02

美股异动 | 遭美监管机构起诉 Coinbase(COIN.US)跌超13%

6月6日(周二),Coinbase(COIN US)股价走低,截至发稿,该股跌超13%,报

06-07 02:49:14

当前滚动:win10怎么进入bios界面(win10进入bios的方法)

1、win10怎么进入bios?很多已经装了win10系统的用户可能都不知道,甚

06-07 02:31:46

牛肉馅饼怎样做才更好吃?-滚动

牛肉馅饼皮薄馅多,鲜嫩多汁,蓬松暄软,营养丰富又好吃,深受大家的喜

06-07 01:45:35

美股异动 | Check-Cap涨超9% 拟裁员90%

格隆汇6月6日丨Check-Cap(CHEK US)涨9 44%,报2美元,总市值1170万美元

06-07 00:11:01

全球微头条丨龙虎榜丨杭州热电今日跌停 知名游资炒股养家净卖出601.18万元

6月5日,杭州热电今日跌停,龙虎榜数据显示,上榜营业部席位全天成交71

06-06 23:09:17

关闭135端口最简单方法_关闭135端口-热资讯

1、在服务器计算机的桌面上,单击开始-管理工具-高级安全性windows防火

06-06 22:08:06

美官员称中方舰机拦截行动有可能导致事故,外交部驳斥

中国外交部发言人汪文斌对此表示,“我昨天已经对美方的相关言论做出了

06-06 21:18:14

天舟五号货运飞船完成与空间站组合体再次交会对接 每日快讯

据中国载人航天工程办公室消息,前期撤离空间站组合体、已独立在轨飞行

06-06 20:02:25

当前动态:中国电建:拟将旗下中电建新能源集团股份有限公司分拆至境内上市

6月2日,中国电力建设股份有限公司发布《关于筹划控股子公司分拆上市的

06-06 19:09:18

利德曼:取得两项《医疗器械注册证》

金融界6月6日消息利德曼公告,近日新取得由北京市药品监督管理局颁发的

06-06 17:51:28

天天快看:上海“斗气车”事故刷屏,吃瓜一线就能看见3辆特斯拉!

近日,一辆黄色工程车和一辆蓝色奥迪车在上海内环高架“斗气”导致事故

06-06 17:41:41

6月6日国内黄金期货涨0.25%|当前观点

6月6日国内黄金期货涨0 25%---中国经济网北京6月6日讯今日,上海期货交

06-06 16:37:24

全球讯息:王鸥美图大秀事业线大长腿!雪肤玉貌魔鬼身材性感撩人

最近,王鸥的粉丝发布了一组偶像的昔日写真,绝对性感美艳!图中,王鸥

06-06 16:13:44

进一位取整函数_进位取整函数

1、对一个小数取整进位是取整函数ROUND。2、格式是round(average(数据

06-06 14:35:33

26岁网红直播喝酒后去世 网友:怎样都不该拿健康搏命

【 26岁网红直播喝酒后去世 网友:怎样都不该拿健康搏命】近日,网传河

06-06 14:05:24

“麦”向丰收 现代农业装备为“三夏”注入智慧力量-微速讯

农业农村部小麦机收调度显示,当前全国已收获小麦超1 22亿亩,进度过四

06-06 13:44:10

环球观焦点:《一枚荔枝的价值》 作者/凌须斌

《一枚荔枝的价值》凌须斌拍卖槌敲击价格落地迸然作响超过万元成交

06-06 12:16:47

任泽平:提振大A既利当前也利长远,可以考虑请机构投资者加大抄底配置比重

5月29日,任泽平在其微博高调表示,“任生泽发,专注头皮头发健康管理

06-06 11:41:04

上海餐饮消费强 咖啡馆全球最多

香港文汇报报导,2023年的“五五购物节”在消费市场引发了一场大爆发,

06-06 10:44:25

环球热门:保险规划的原则

1、先社会后商业保险原则:因为社会保险是国家强制保障劳动者在失去劳

06-06 10:20:25

皇马有意阿芳?记者:拜仁视他为非卖品,只有卢卡斯和帕瓦尔待售

直播吧6月6日讯根据此前的报道,皇马有意引进阿方索-戴维斯补强后防,

06-06 09:14:47

《Kubernetes二次开发与进阶实战集训营》7月开课|世界滚动

Kubernetes是一个复杂而强大的技术,需要深入学习和实践才能充分理解和

06-06 07:55:12

近3年逆势飙涨183.84% 金元顺安基金缪玮彬为什么行-环球热点

《电鳗财经》文 尹秋彤今年以来,在市场波动较大的背景下,无论是主动

06-06 07:05:05

硬核科技论 | 终于加上激光雷达 全新蔚来ES6黑科技升级盘点

昨天也就是5月24日,全新一代蔚来ES6上市了,36 8-42 6万元的价格,今

06-06 06:07:22

长期喝菊花茶有什么好处和坏处_菊花茶解药吗-天天简讯

想必现在有很多小伙伴对于菊花茶解药吗方面的知识都比较想要了解,那么

06-06 05:08:28

【基差】06月05日国内商品基差数据一览 天天速读

【基差】更新啦!06月05日国内商品基差数据一览

06-06 03:55:14

杨若男牵手是哪一期完整版_杨若男牵手是哪一期

想必现在有很多小伙伴对于杨若男牵手是哪一期方面的知识都比较想要了解

06-06 02:55:54

天天快看点丨csgo启动时没有国服选项 csgo没有国服选项原因

,csgo没有使用国服启动器_csgo启动时没有国服选项_csgo没有国服选项原

06-06 01:44:59

分析人士:美国从多层面介入俄乌冲突 激化矛盾|天天快播

近期,多位分析人士指出,俄乌冲突以来,美国持续向乌克兰提供大量资金

06-06 01:18:30

喉炎的症状小儿多久痊愈_喉炎的症状

1、成年人以喉部症状为主,病初咽部有干痒,灼热,渐有疼痛,吞咽时加重,唾

06-06 00:32:32

开除,永不录用!

开除,永不录用!6月2日,江西南昌一只小狗跟着顾客进入美发店随后男店

06-05 23:34:12

要闻:9月05日更新消息 瑞士第二季度GDP环比增长0.3%,同比增长2.8%

瑞士国家经济事务秘书处9月5日发布数据,瑞士第二季度GDP环比增长0 3%

06-05 22:11:43

中梁控股9.3亿美元境外债重组似迎转机 环球观点

中梁控股(02772 HK)境外债务整体解决迎来重大进展。6月1日,中梁控股发

06-05 21:47:20

全球球精选!快手电商618大促前三天品牌商品GMV同比增长超220%

上证报中国证券网讯(记者罗茂林)近日,快手电商发布618战报。数据显

06-05 21:24:41

AI潮起,巨人网络仍等“第二春”

互联网有名有姓的企业纷纷拥抱AI,生怕成为大潮之下的牺牲品,游戏行业

06-05 19:37:57

全球观速讯丨绿色通道、爱心候考、静音行动……济南轨道 交通集团助力中高考!

记者季明智2023年中高考在即,为给考生提供更加舒适便捷的出行体验,济

06-05 18:53:09

LDPE商品报价动态(2023-06-05)

交易商品牌 产地交货地最新报价LDPE 牌号:2426H;用途级别:薄膜级扬子

06-05 18:22:45

环球今亮点!5月份中信理财博赢私享价值龙头股指2号下跌6.58%

5月份中信理财博赢私享价值龙头股指2号下跌6 58%

06-05 17:35:00

扬州失业金必须15天之内办理吗?有时间限制吗?_当前简讯

扬州失业金必须15天之内办理吗?有时间限制吗?失业金申领条件是什么?

06-05 16:16:25

合伙抓鵟10只 最高判6年,砍5株珙桐也被判刑
国网重庆铜梁供电以“党建+度夏保供”迎战夏峰_全球今头条
【天天聚看点】2023山西高考外语口试6月10日报名
苹果Vision_Pro价格公布后股价大跌 市值蒸发6000亿 热闻
中铁十六局集团有限公司董梁_中铁十六局集团有限公司
【速看料】逾20家上市公司披露减持计划 美的集团拟大幅减仓埃夫特股份
天趣网络_天趣网络
全球实时:绿城管理控股(09979):翁美仪获委任为联席公司秘书及法律程序文件代理人
问道宠物飞升昏睡鼠怎么过_问道宠物飞升 焦点热门
杭州:力量与技巧的碰撞 全国U17国际式摔跤锦标赛落幕
美股异动 | 遭美监管机构起诉 Coinbase(COIN.US)跌超13%
当前滚动:win10怎么进入bios界面(win10进入bios的方法)
牛肉馅饼怎样做才更好吃?-滚动
美股异动 | Check-Cap涨超9% 拟裁员90%
全球微头条丨龙虎榜丨杭州热电今日跌停 知名游资炒股养家净卖出601.18万元
关闭135端口最简单方法_关闭135端口-热资讯
美官员称中方舰机拦截行动有可能导致事故,外交部驳斥
天舟五号货运飞船完成与空间站组合体再次交会对接 每日快讯
当前动态:中国电建:拟将旗下中电建新能源集团股份有限公司分拆至境内上市
利德曼:取得两项《医疗器械注册证》
天天快看:上海“斗气车”事故刷屏,吃瓜一线就能看见3辆特斯拉!
6月6日国内黄金期货涨0.25%|当前观点
全球讯息:王鸥美图大秀事业线大长腿!雪肤玉貌魔鬼身材性感撩人
进一位取整函数_进位取整函数
26岁网红直播喝酒后去世 网友:怎样都不该拿健康搏命
“麦”向丰收 现代农业装备为“三夏”注入智慧力量-微速讯
环球观焦点:《一枚荔枝的价值》 作者/凌须斌
任泽平:提振大A既利当前也利长远,可以考虑请机构投资者加大抄底配置比重
上海餐饮消费强 咖啡馆全球最多
环球热门:保险规划的原则
皇马有意阿芳?记者:拜仁视他为非卖品,只有卢卡斯和帕瓦尔待售
《Kubernetes二次开发与进阶实战集训营》7月开课|世界滚动
近3年逆势飙涨183.84% 金元顺安基金缪玮彬为什么行-环球热点
硬核科技论 | 终于加上激光雷达 全新蔚来ES6黑科技升级盘点
长期喝菊花茶有什么好处和坏处_菊花茶解药吗-天天简讯
【基差】06月05日国内商品基差数据一览 天天速读
杨若男牵手是哪一期完整版_杨若男牵手是哪一期
天天快看点丨csgo启动时没有国服选项 csgo没有国服选项原因
分析人士:美国从多层面介入俄乌冲突 激化矛盾|天天快播
喉炎的症状小儿多久痊愈_喉炎的症状
开除,永不录用!
要闻:9月05日更新消息 瑞士第二季度GDP环比增长0.3%,同比增长2.8%
中梁控股9.3亿美元境外债重组似迎转机 环球观点
全球球精选!快手电商618大促前三天品牌商品GMV同比增长超220%
AI潮起,巨人网络仍等“第二春”
全球观速讯丨绿色通道、爱心候考、静音行动……济南轨道 交通集团助力中高考!
LDPE商品报价动态(2023-06-05)
环球今亮点!5月份中信理财博赢私享价值龙头股指2号下跌6.58%
扬州失业金必须15天之内办理吗?有时间限制吗?_当前简讯
全球热资讯!临夏县旅游大通道全域旅游基础设施综合提升项目—马莲山栈道及观景平台
X 广告
行业动态
X 广告

Copyright ©  2015-2032 华西植物网版权所有  备案号:京ICP备2022016840号-35   联系邮箱: 920 891 263@qq.com