环球滚动:领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座! - 综合 -

当前位置:首页  >  综合  > 正文

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

环球滚动:领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座!
2023-06-07 22:50:54 来源:博客园

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

如何用 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

标签:

(责任编辑:news01)
蕨菜根繁殖方法_蕨菜根如何繁殖

蕨菜根繁殖方法_蕨菜根如何繁殖

欢迎观看本篇文章,小升来为大家解答以上问题。蕨菜根繁殖方法,蕨菜根
06-05 10:48:19
资讯:王杨:黄金非农暴跌获利,今日1957压力继续干空!

资讯:王杨:黄金非农暴跌获利,今日1957压力继续干空!

黄金当前明显重新回归下跌趋势,周五非农王杨及时调整思路,1969和1967
06-05 10:05:40
秘鲁葡萄出口达32.5万吨,同比大增35%|关注

秘鲁葡萄出口达32.5万吨,同比大增35%|关注

2023年经历了年初的出货量高峰之后,秘鲁鲜食葡萄出口量有所放缓,但出口活动始终处于上升趋势。
06-05 09:20:44
空间站为什么不会掉下来_空间尾巴_天天观天下

空间站为什么不会掉下来_空间尾巴_天天观天下

你们好,最近小信发现有诸多的小伙伴们对于空间站为什么不会掉下来,空间尾巴这个问题都颇为感兴趣的,今天
06-05 08:28:29
香港金管局料推出银行间开放应用程序界面|环球新动态

香港金管局料推出银行间开放应用程序界面|环球新动态

据香港《信报》6月5日报道,香港金管局在推动银行与银行间开放应用程序界面(OpenAPI)的发展,据悉已进入
06-05 07:42:44
焦点关注:上市公司定增方案变阵,买方主导市场加速分化

焦点关注:上市公司定增方案变阵,买方主导市场加速分化

每经AI快讯,6月伊始,定增市场便风云变幻。茶花股份公告定增批复到期失效;郭广昌麾下豫园股份定增募资总
06-05 06:34:31
职业卫生培训教材图片_职业卫生培训教材

职业卫生培训教材图片_职业卫生培训教材

1、1,什么是职业卫生2,职业病的预防和控制3。2、职业病的诊断和康复4,职业卫生查体的重要性5,工作场所
06-05 05:08:40
天天观点:工信部:加快5G行业虚拟专网建设 全面推进6G技术研发

天天观点:工信部:加快5G行业虚拟专网建设 全面推进6G技术研发

作者:祝嫣然“前瞻布局下一代互联网等前沿领域,全面推进6G技术研发,营造良好发展环境,引导支持企业...
06-05 01:54:36
今日视点:6月1日(发布时间),上海,23岁女子失恋酗酒闹自杀咬伤民警小腿,法院:犯袭警罪,获刑7个月缓刑1年。

今日视点:6月1日(发布时间),上海,23岁女子失恋酗酒闹自杀咬伤民警小腿,法院:犯袭警罪,获刑7个月缓刑1年。

6月1日(发布时间),上海,23岁女子失恋酗酒闹自杀咬伤民警小腿,法院:犯袭警罪,获刑7个月缓刑1年。
06-04 23:52:06
每日速讯:天津:进一步研究部署做好津南区八里台镇局部地面沉降应对处置工作

每日速讯:天津:进一步研究部署做好津南区八里台镇局部地面沉降应对处置工作

天津:进一步研究部署做好津南区八里台镇局部地面沉降应对处置工作:6月4日,天津市委书记陈敏尔,市委副书
06-04 22:37:03
再添一名悍将 吉利新SUV定名“博越X”-当前报道

再添一名悍将 吉利新SUV定名“博越X”-当前报道

[本站资讯]日前,我们从官方获悉,吉利正式公布博越家族新车型命名:博越X。官方解释称,其中X代表新车在博
06-04 22:28:07
动态:暗黑破坏神3萌新 暗黑破坏神3新手攻略新手实用技巧

动态:暗黑破坏神3萌新 暗黑破坏神3新手攻略新手实用技巧

1、《暗黑破坏神3》这款游戏刚刚开启了国服,那么新手要怎么玩好这款游戏呢?有什么心得呢?下面小编给大家
06-04 21:06:16
全球热门:工信部:加快5G行业虚拟专网建设,全面推进6G技术研发

全球热门:工信部:加快5G行业虚拟专网建设,全面推进6G技术研发

“前瞻布局下一代互联网等前沿领域,全面推进6G技术研发,营造良好发展环境,引导支持企业加大研发投入...
06-04 20:23:48
机械师怎么考_器械师 环球消息

机械师怎么考_器械师 环球消息

1、器械拥有远程打击能力,攻击出众,善于克制步兵和战车。2、善于破坏城墙望采纳。本文到此分享完毕,希望
06-04 19:07:23
董国华_关于董国华的简介 全球报资讯

董国华_关于董国华的简介 全球报资讯

音频解说1、董国华,男,汉族,1957年10月出生,籍贯福建省莆田市,1995年2月入党,1980年8月参加工作,福建省
06-04 17:58:24
40MM大直径动圈单元+70小时续航!万魔蓝牙耳机618特惠价449元-每日信息

40MM大直径动圈单元+70小时续航!万魔蓝牙耳机618特惠价449元-每日信息

目前京东售价499元,可参加(每满300减50优惠活动),到手价449元,属于近期好价。这款耳机的音质效果是非
06-04 16:50:48
不能输入剪贴板因为意外地遇到文件尾无法打开PS_不能输入剪贴板因为意外地遇到文件尾

不能输入剪贴板因为意外地遇到文件尾无法打开PS_不能输入剪贴板因为意外地遇到文件尾

1、先在里点击图片查看原图然后复制!。本文到此分享完毕,希望对大家有所帮助。
06-04 16:40:34
天天观察:情侣签名一对甜蜜_超甜的情侣签名一人一半 有点撒娇还甜的情侣签名

天天观察:情侣签名一对甜蜜_超甜的情侣签名一人一半 有点撒娇还甜的情侣签名

我想要山盟,你却带给我海誓。我想去天涯,你却带我去海角。虽然我疯疯癫癫,却爱的比谁都深。虽然我痴痴傻
06-04 15:49:06
【环球播资讯】华创证券:多种新能源材料价格上行 看好工业硅四季度涨价行情

【环球播资讯】华创证券:多种新能源材料价格上行 看好工业硅四季度涨价行情

华创证券今日发布研报称,上周(9 19-9 25)多种新能源材料价格上行,看好工业硅四季度涨价行情。根据测算
06-04 14:53:18
“三跑地”改造成为“三保田” 小杂粮种出新希望 世界速看

“三跑地”改造成为“三保田” 小杂粮种出新希望 世界速看

由于可能会出现降雨天气,当地紧急组织应急抢收作业服务队,24小时投入麦收,争取在降雨之前将成熟的小麦收
06-04 14:04:10

iPhone12什么时候上市?4G版本可能会在2021年初推出

给大家分享一篇关于手机知识的文章。相信很多朋友对手机还是不太了解。随后边肖还在网上搜集了一些关于手机
06-04 13:24:15

全球热推荐:生三孩一次性奖10万!一上市公司出手鼓励生娃,网友:还招人吗?

为了鼓励生育,不少地方政府陆续推出支持政策,一些企业也主动提高员工生育福利。日前,上市公司侨银股份发
06-04 12:13:09

焦点讯息:坐高铁需要核酸检测吗_坐高铁需要提供什么证明

坐高铁需要核酸检测吗,坐高铁需要提供什么证明很多人还不知道,现在让我们一起来看看吧!1、乘坐高铁是否
06-04 11:14:33

中国足球俱乐部历史最久(中国足球俱乐部) 世界热讯

今天小编岚岚来为大家解答以上的问题。中国足球俱乐部历史最久,中国足球俱乐部相信很多小伙伴还不知道,现
06-04 10:25:19

河南麦收进程过半 已收获小麦4410万亩_世界观热点

中新社郑州6月3日电(记者韩章云)河南省农业农村厅3日发布消息称,截至当日17时,该省小麦已收获4410万亩,
06-04 09:33:00

近4位足总杯决赛梅开二度球员中三位来自曼城:京多安&斯特林在列

近4位足总杯决赛梅开二度球员中三位来自曼城:京多安&斯特林在列,曼城,足总杯,巴西足球,沃特福德队,英格兰
06-04 08:39:48

天天速讯:卡尔毁天灭地怎么放(毁天灭地怎么放)

来为大家解答以下的问题,尔毁天灭地怎么放,毁天灭地怎么放这个很多人还不知道,现在让我们一起来看看吧!1
06-04 07:08:23

也就是所谓的悲观主义吗

对于存在着却又感受不到的事物你会感到害怕吗?还是说你会带着人类的探索之心去尝试查阅呢?不管是什么样的
06-04 06:27:26

世界关注:海外网站再次更新《哪吒》,一个动漫电影为什么能遭到成年人的广泛喜爱?

在电影宣传片放出来后,我就看到街上好多人不约而同的扎着“小哪吒辫”,可见这部影片的火热程度。哪吒...
06-04 04:44:52

全球热讯:凰图腾剧情_该剧讲述了什么

欢迎观看本篇文章,小柴来为大家解答以上问题。凰图腾剧情,该剧讲述了什么很多人还不知道,现在让我们一起
06-04 03:05:43

为您推荐

精彩推送