世界播报:领导看了给你加薪!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

标签:

阿斯利康(AZN.US)Dato-DXd在肺癌III期临床试验中满足PFS双重主要终点

阿斯利康(AZN US)表示,这些数据将在即将召开的医学会议上提交,并与卫

07-03 16:17:51

天天通讯!酒吧连锁行业发展现状及和发展趋势分析2023

商务部城市居民消费习惯调查报告显示,我国60%的消费发生在夜间。夜间

07-03 15:51:31

环球热议:买重疾险注意事项?重疾险你可能白买了

买重疾险注意事项:不要盲目选择不适合自己的保险产品、不要仅关注费率

07-03 15:45:51

株洲今年市政设施专项维修来了 看看是不是你关心的地方_焦点观察

让城市更安全,居民出行更顺畅今年市政设施专项维修来了,看看是不是你

07-03 15:04:32

暴雨!大暴雨!明天这里将迎降雨最强时段

【暴雨!大暴雨!明天这里将迎降雨最强时段】今天(7月3日)10时,中央

07-03 14:48:05

电脑版抖音私信怎么发图片(怎么发私信)

来为大家解答以上问题,电脑版抖音私信怎么发图片,怎么发私信很多人还

07-03 13:59:23

民航局:适度超前建设网络基础设施探索研究6G等新技术在民航领域的应用|全球动态

民航局:适度超前建设网络基础设施探索研究6G等新技术在民航领域的应用

07-03 13:22:55

即时:《最终幻想16》召唤兽技能汇总 召唤兽有哪些技能?

跟随最终幻想16的运行,玩家会碰到很多问题不清楚怎么解决,所以为了助

07-03 12:42:47

大乔是个怎样的人?三国大乔简介

大乔是中国古代历史上著名的美女之一,她的故事至今仍然被人们津津乐道

07-03 12:25:18

壶瓶山一黑熊误踩废弃兽夹被困,长沙常德两地联手妥善救治后将其放归自然

常德壶瓶山国家级自然保护区,救护队员正救护黑熊。受访者供图历时11个

07-03 11:56:55

中信建投期货7月3日贵金属早报:核心通胀回落 贵金属探底回升

隔夜贵金属探底回升盘中大幅波动略超预期的核心PCE降幅稍微软化了市场

07-03 11:21:29

【环球播资讯】徐州:主城区卖旧房买新房给予补贴 90平米以上补1.2%

补贴对象为对自2023年2月27日至2023年12月31日止(存量住房合同备案日

07-03 10:50:43

天天速递!2023山西高考什么时候开始录取?附各批次

提前批次(7月4日—17日)提前录取的艺术类、体育类本科院校7月4日至14日

07-03 10:33:26

2023年医保药品目录调整方案,有哪些亮点?

从7月1日开始,2023年医保药品目录调整正式开启申报工作,这是从2018年

07-03 10:19:48

2023深圳社保个人缴费多少钱一个月深圳社保缴费标准费用如下

深圳社保缴费标准怎么计算的呢?以单位买全社保为准,计算如下所示:医

07-03 10:01:33

天天快看点丨中金公司:关注中报业绩与政策预期

中金公司7月3日研报指出,关注中报业绩与政策预期,市场风格有望更加均

07-03 09:17:24

受冷空气影响 4日起赣北赣中有一次较明显雷雨天气过程_微资讯

刚刚过去的双休日,我省多地最高气温在36℃左右。据省气象台预测:本周

07-03 09:11:00

国家统计局报告显示:2022年文化新业态营收占比首破30%_每日速读

《2022年全国文化及相关产业发展情况报告》29日发布,这是国家统计局首

07-03 08:18:48

历时5年半1号线三期开通-天天热点评

历时5年半1号线三期开通

07-03 07:49:23

经常吃枸杞的好处_吃枸杞的好处 全球聚焦

1、枸杞中含有大量胡萝卜素,可转化为维生素A产生视黄醇,改善视力。2

07-03 07:01:13

环球讯息:澳大利亚东海岸各机场航班连续三天大面积延误

来源:中国新闻网中新社悉尼7月2日电据澳大利亚媒体“9News”和《每日

07-03 05:34:58

宠物用品业务_宠物用品行业怎样 有发展前景吗

1、智研咨询发布的《2017-2023年中国宠物用品市场专项调研及投资战略研

07-03 03:43:15

锐界最好用什么机油型号(锐界最好用什么机油?)

相信大家对锐界最好用什么机油型号,锐界最好用什么机油?的问题都很疑

07-03 01:06:41

奥园境外债务重组方案出炉 动态焦点

本次境外重组包括部分债转股和永续债。

07-02 22:50:37

【天天时快讯】天天百事通!华为赛力斯合作再进化 成立 AITO 问界销服联合工作组-环球聚看点

【CNMO新闻】近日,网络上流出一则AITO问界发布的 "致全体合作伙伴的一

07-02 21:14:06

建设社会主义文化强国 今日观点

文化是一个国家、一个民族的灵魂。文化兴国运兴,文化强民族强。没有高

07-02 20:45:22

在远香湖畔,听这群少年奏响夏天的旋律

今天下午,在上海保利大剧院举办的上海保利大剧院青少年交响乐团一周年

07-02 19:29:59

中国足球的巨大损失:中超独造37球可直接归化外援解约离开!-世界新消息

中超联赛夏季转会窗开启之后,不少球队都已经有了大动作,其中,外援的

07-02 18:21:28

西湖的古诗句有哪些 描写西湖诗句的有哪些 环球热点评

抄写作文网小编为大家提供西湖的古诗句有哪些描写西湖诗句的有哪些来供

07-02 17:22:38

首局2-11被虐后4连斩,30岁丁宁逆境爆发,奥运打伊藤美诚她最稳

总比分0比2落后并首局遭遇大比分失利,身处逆境的丁宁竟然连下4局完成

07-02 16:22:04

什么是松针灵芝_松针灵芝是什么

1、松木层孔菌又称松木层孔菌,属于多孔菌科。子实体多年生,木栓质,

07-02 15:44:35

最新人民币兑换离岸人民币汇率汇价查询_2023年07月02日_环球观速讯

1人民币≈1 00179离岸人民币1离岸人民币≈0 998213人民币备注:以上人

07-02 15:03:24

烟台翁婿二人先后跳进湖中勇救落水母子

大小新闻客户端7月2日讯(YMG全媒体记者张苹摄影报道)“快救人,有人

07-02 13:41:43

栀子花需要修剪花苞吗 ?栀子花谢了后,这样修剪下,新芽呼呼冒,花苞长满树开花多三倍 世界观天下

栀子花四季常绿,花朵芳香,枝繁叶茂,是很受大家喜爱的盆栽观赏植物,

07-02 12:33:25

热点在线丨动物吃生肉是为什么呢?

这和动物的消化系统有关科学家都知道:每一种动物都有不同的生理结构,

07-02 11:54:56

北京经开区管委会主任孔磊:中小企业是建设现代化经济体系、推动经济实现高质量发展的重要基础-焦点速看

2023年第十届中国中小企业投融资交易会于7月2—4日在北京举行,主题为

07-02 10:53:25

中国和泰国将举行“鹰击-2023”空军联合训练 当前看点

根据年度计划及中泰双方达成的共识,中泰“鹰击-2023”空军联合训练将

07-02 10:09:46

滨海新区坚持以港聚产、以产兴城、以城促产、港城互促 全面打造“四宜”美丽滨城_世界最资讯

在市政府新闻办举行的“十项行动·港产城融合发展行动方案”新闻发布会

07-02 09:39:14

青铜奥特曼_青竜奥特曼

1、每集名称日文名称登场怪兽 宇宙人播放时间1发光的迪迦光を継ぐもの

07-02 08:54:41

拒离队!巴萨乱了!亏3000万,下最后通牒,哈维拿他没办法_全球即时

埃梅里需要一位能够与沃特金斯共享进球重担的球员,而托雷斯似乎是理想

07-02 08:01:54

手机淘宝扫一扫在哪里找 手机淘宝扫一扫在哪里_世界即时

1、打开手机淘宝APP。2、首页的左上方就有一个可以扫描二维码的小框点

07-02 05:59:21

定势

1、定势。2、武术词汇。3、指拳械技术中的固定路数、姿势和变化规律。

07-02 04:01:27

最时尚的衣帽间设计_2022年最新80款衣帽间设计

hello大家好,我是大学网网小航来为大家解答以上问题,最时尚的衣帽间

07-02 01:40:46

一个英俊的河马在午夜写的小说

当前大家对于午夜招魂河马很帅所著小说都是颇为感兴趣的,大家都想要了

07-01 22:57:27

环球最资讯丨谴责的近义词有什么_谴责的近义词是什么

hello大家好,我是价值网小科来为大家解答以上问题,谴责的近义词有什

07-01 21:46:48

世界快看点丨道氏技术:接受长江证券等机构调研

道氏技术(SZ300409,收盘价:12 57元)发布公告称,2023年6月中信策略

07-01 20:32:56

世界热文:翻译:温网2023首轮5大焦点战:中美2哥之争,吴易昺VS蒂亚福上榜

穆雷携草地10连胜收获了2个ATP挑战者赛的冠军奖杯。前世界No 1+2届温网

07-01 19:26:49

环球焦点!真相揭晓!中国女篮困境原因解释,这次球迷们看到了

真相揭晓!中国女篮困境原因解释,这次球迷们看到了这场比赛对中国女篮

07-01 17:56:29

成功加盟都爱咪果碳烤鸭的条件都有哪些?

品牌名称都爱咪果碳烤鸭加盟所属行业烤鸭主营产品烤鸭加盟费用0元基础

07-01 16:45:19

如何包书皮教程_如何包书皮-天天新要闻

1、准备材料:书皮纸、剪刀、窄胶带。2、

07-01 15:42:15

天天通讯!酒吧连锁行业发展现状及和发展趋势分析2023
环球热议:买重疾险注意事项?重疾险你可能白买了
株洲今年市政设施专项维修来了 看看是不是你关心的地方_焦点观察
暴雨!大暴雨!明天这里将迎降雨最强时段
电脑版抖音私信怎么发图片(怎么发私信)
民航局:适度超前建设网络基础设施探索研究6G等新技术在民航领域的应用|全球动态
即时:《最终幻想16》召唤兽技能汇总 召唤兽有哪些技能?
大乔是个怎样的人?三国大乔简介
壶瓶山一黑熊误踩废弃兽夹被困,长沙常德两地联手妥善救治后将其放归自然
中信建投期货7月3日贵金属早报:核心通胀回落 贵金属探底回升
【环球播资讯】徐州:主城区卖旧房买新房给予补贴 90平米以上补1.2%
天天速递!2023山西高考什么时候开始录取?附各批次
2023年医保药品目录调整方案,有哪些亮点?
2023深圳社保个人缴费多少钱一个月深圳社保缴费标准费用如下
天天快看点丨中金公司:关注中报业绩与政策预期
受冷空气影响 4日起赣北赣中有一次较明显雷雨天气过程_微资讯
国家统计局报告显示:2022年文化新业态营收占比首破30%_每日速读
历时5年半1号线三期开通-天天热点评
经常吃枸杞的好处_吃枸杞的好处 全球聚焦
环球讯息:澳大利亚东海岸各机场航班连续三天大面积延误
宠物用品业务_宠物用品行业怎样 有发展前景吗
锐界最好用什么机油型号(锐界最好用什么机油?)
奥园境外债务重组方案出炉 动态焦点
【天天时快讯】天天百事通!华为赛力斯合作再进化 成立 AITO 问界销服联合工作组-环球聚看点
建设社会主义文化强国 今日观点
在远香湖畔,听这群少年奏响夏天的旋律
中国足球的巨大损失:中超独造37球可直接归化外援解约离开!-世界新消息
西湖的古诗句有哪些 描写西湖诗句的有哪些 环球热点评
首局2-11被虐后4连斩,30岁丁宁逆境爆发,奥运打伊藤美诚她最稳
什么是松针灵芝_松针灵芝是什么
最新人民币兑换离岸人民币汇率汇价查询_2023年07月02日_环球观速讯
烟台翁婿二人先后跳进湖中勇救落水母子
栀子花需要修剪花苞吗 ?栀子花谢了后,这样修剪下,新芽呼呼冒,花苞长满树开花多三倍 世界观天下
热点在线丨动物吃生肉是为什么呢?
北京经开区管委会主任孔磊:中小企业是建设现代化经济体系、推动经济实现高质量发展的重要基础-焦点速看
中国和泰国将举行“鹰击-2023”空军联合训练 当前看点
滨海新区坚持以港聚产、以产兴城、以城促产、港城互促 全面打造“四宜”美丽滨城_世界最资讯
青铜奥特曼_青竜奥特曼
拒离队!巴萨乱了!亏3000万,下最后通牒,哈维拿他没办法_全球即时
手机淘宝扫一扫在哪里找 手机淘宝扫一扫在哪里_世界即时
定势
最时尚的衣帽间设计_2022年最新80款衣帽间设计
一个英俊的河马在午夜写的小说
环球最资讯丨谴责的近义词有什么_谴责的近义词是什么
世界快看点丨道氏技术:接受长江证券等机构调研
世界热文:翻译:温网2023首轮5大焦点战:中美2哥之争,吴易昺VS蒂亚福上榜
环球焦点!真相揭晓!中国女篮困境原因解释,这次球迷们看到了
成功加盟都爱咪果碳烤鸭的条件都有哪些?
如何包书皮教程_如何包书皮-天天新要闻
最打动女孩内心的句子
X 广告
行业动态
X 广告

Copyright ©  2015-2032 潇湘植物网版权所有  备案号:琼ICP备2022009675号-41   联系邮箱: 435 227 67@qq.com