首页 > 资讯 >

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

2023-06-07 15:47:21 来源:博客园

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


(资料图片)

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

上一篇:

世界热文:龙职中实训楼(龙职中)

下一篇:

最后一页

x
推荐阅读

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

今日快看!牛剖层革是什么材料_牛剖层革是什么

世界热文:龙职中实训楼(龙职中)

大运倒计时丨会徽、吉祥物、火炬、奖牌集中亮相 童声合唱版音乐短视频发布

阳了吃什么化痰效果最好_吃什么化痰效果最好 播资讯

为区域经济一体化注入强劲动力(经济新方位)

霍普股份:6月6日融资买入69.23万元,融资融券余额1637.12万元

今日视点:通行宝:6月6日融资买入307.21万元,融资融券余额3647.2万元

怡和嘉业:6月6日融资买入691.88万元,融资融券余额6130.48万元 今日讯

苹果上新70W USB-C电源适配器,售价399元 讯息

世界新动态:美研究:美国2021年每11分钟就有1人死于枪支暴力 创历史新高

【全球报资讯】16省份公布去年平均工资:哪个行业收入最高?

边缘计算概念再度走强 南凌科技20CM涨停

wps目录的点怎么打_wps目录后面的点怎么打_环球即时看

今日要闻!山东杏林科技职业学院有哪些专业 山东杏林科技职业学院专业排名

全国首个跨省公务员遴选在四川达州市启动 焦点简讯

这才是适合盛夏季节自驾的线路,景美人少,6到7月出行正当时

科大讯飞:飞星火认知大模型成果发布会已有来自36个行业的3000余家企业开发者与讯飞达成了明确的合作意向,且数量在持续增加中

有限公司是内资企业吗_内资企业是什么意思 当前关注

每日聚焦:双碳背景下可再生能源技术及应用

世界最新:黑龙江省大兴安岭地区呼玛县2023-06-04 15:01发布大风蓝色预警

世界百事通!湖南2018年380上什么学高考左右能哪些大分能校

天天速递!千禾味业(603027.SH):定增申请获得证监会同意注册批复

天天新动态:寡君_关于寡君介绍

洗衣机专用龙头如何拆卸_洗衣机专用龙头_天天百事通

今日聚焦!山东聊城中华路北延暨跨济聊高速大桥正式通车

福州打响二手房中介收费调整“首枪”

迈克尔加成反应在聚合中的应用_迈克尔加成反应

世界即时:充电玩手机爆炸前兆

节气里的中国智慧丨今日,芒种

据菲律宾媒体5日报道,菲海关局发布《区域全面经济伙伴关系协定》(RCEP)下关于实施特别关税的条件规定

世界快讯:美媒:“傲慢与虚伪”令全球南方远离美国

鏂滅汗澶滆浘鍙戠敓鏃堕棿_斜纹后红天蛾

世界最新:女方提出了离婚孩子归男方吗(女方提出离婚小孩归谁)

当前滚动:张萌称电视剧也是一种争议的艺术

实用贴丨关于买卖、赠与、继承税率全解析,这样操作可省钱!

成都与华润集团签约战略合作 含6个系列项目投资协议

【报资讯】qq炸弹代码vbs_qq炸弹

沈兵履新!

当前播报:6月开局零跑稳居前二周销量再超3000台

美团买药联动药店药企发起“小黄灯健康守护联盟” 全球今头条

京城家校社共筑学生视力“健康墙” 开展人工智能眼健康项目_看热讯

主材包括哪些品类_主材包括哪些 全球快播报

全球最资讯丨不锈钢钢带的用途_不锈钢钢带

怎么把qq秀形象去掉_怎么把qq秀弄没

英国央行在一份声明中表示,该行已经完成了所有计划中的公司债出售,所持债券较最初购买额200亿英镑减少逾95%|焦点热议

2连板北京文化:前期披露信息不存在需要更正、补充之处_世界新消息

天天亮点!全球资源反哺中国,起亚加速在华战略变革

证监会:同意华虹半导体有限公司首次公开发行股票注册|当前焦点

环球快资讯丨社保断交多久就失效了?三个月以上补缴可以吗?