首页>资讯 > 光影 > 正文

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

来源:博客园    2023-06-07 23:22:30

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


(资料图)

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

关键词:

中考后两天,沈阳将出现多云有阵雨或雷阵雨天气_全球微资讯

炎炎夏日里,热和雨总归有一个在路上。随着高空槽东移,沈城炎热天气将

全球最新:沈阳:纾困解难服务企业真心贴心暖心

沈阳工程学院科技园内,经过一个多小时对接,双方的手紧紧握在一起,中

前5个月大连经济运行延续稳定恢复态势|热门看点

记者从市统计局获悉,我市坚持稳中求进工作总基调,着力推动经济高质量

天天热议:大连港迎来全球最大集装箱船

6月24日零时10分,全球最大24100标箱级超大型集装箱船“地中海尼古拉马

创新“夜经济” 传播“沈阳味道”

盛夏时节,各地夜市流光溢彩,“夜经济”成为拉动城市经济的重要引擎。

辽宁省食品安全“你点我检、服务惠民生”活动启动

为让消费者感知食品安全监管就在身边,近日,省市场监管局启动全省食品

“端午经济”释放消费活力 辽宁省重点餐饮企业营业额同比增58%

吃粽子、赛龙舟、逛夜市……刚刚过去的端午节假期,叠加高考结束因素,

让合作项目快落地早结果 快播报

6月25日,国资央企助力东北全面振兴座谈会在沈阳召开。会议期间,介绍

沈阳:只争朝夕项目建设提速提质提效

工程车辆往返穿梭、厂房内电光闪烁,工人们干得热火朝天。端午假期,在

防范高温旱情 辽宁完成农田补水4.61亿立方米

从6月中旬以来,辽宁省出现连续高温晴热天气,多地发布了高温橙色预警

沈阳金融业扩大开放综合试点提质增速

记者6月25日从沈阳市金融发展局获悉,沈阳获批国家服务业扩大开放综合

沈城论坛 | 做足做好服务 迎接旅游“暑期档”

端午假期,沈阳再掀文旅高潮。“最火”五一连接“最火”端午,高涨的热

天天滚动:沈阳工农桥改造进展:引桥和慢行道土建工程已经完毕

日前,在工农桥改造工程施工现场,中铁一局的工人们正在吊装钢梁,引桥

天天百事通!1-5月,沈阳市新落地亿元以上项目533个

6月25日,记者从市商务局了解到,今年1-5月,全市新落地亿元以上项目53

好萌“鸭”!中华秋沙鸭宝宝的“童年时光”

近日,珲春摄影师驱车300余公里,在吉林抚松漫江拍摄到中华秋沙鸭育婴

二十年,焕然一新_最新

在山水田园间打造出诗意栖居民宿在乡野阡陌中绘就年轻人的诗与远方在广

2023年吉林省高校招生政策宣讲系列直播

点击观看→长春大学专场点击观看→吉林外国语大学专场点击观看→白城师

央地合作再结硕果 沈阳市首个百亿级央地合作项目破土动工

新华网沈阳6月25日电(唐晓瑭丁成玉)央地携手谋共赢,精诚合作结硕果

世界快消息!沈铁迎来16年来最大幅度调图 释放客货运列车运力

新华社沈阳6月25日电(记者丁非白)为更好满足运力需要,中国铁路沈阳

端午假期吉林机场集团运送旅客14.2万人次-世界通讯

“端午节”小长假期间,吉林机场集团所属各机场共保障航班起降1115架次

辽阳:公积金业务“不见面”办理

日前,记者从辽阳市相关部门获悉,为持续推进智慧化住房公积金平台建设

天天观察:2023浙江教育考试院高考成绩查询入口+查询操作图示

2023浙江省教育考试院网站高考成绩查询方法①浙江省教育考试院官网成绩

全球快报:森泰股份: 拟设立境外子公司收购境外资产

森泰股份(SZ301429,收盘价:元)6月25日晚间发布公告称,根据安徽森

德新科技:子公司锂电池裁切模具全自动润滑装置获发明专利证书 天天快消息

德新科技6月25日公告,公司全资子公司东莞致宏精密模具有限公司于近日

世界速递!韩国渔业团体集会反对核污水排海:日本怎么不自己留作农业用水?

来源:海外网韩国渔业团体集会反对核污水排海(社交媒体截图)海外网6

小米官方再辟谣:节日送小米礼品的都是非官方活动

每逢节日,网络上总会出现一些免费送礼的活动,其中送小米产品的尤其多

古典吉他和民谣吉他区别_古典吉他和民谣吉他

你们好,最近小品发现有诸多的小伙伴们对于古典吉他和民谣吉他区别,古

@济宁考生,2023山东高考分数线揭晓!一段线为443分,二段线为150分

大众网记者李慧济宁报道6月25日下午,山东省教育厅举行2023年普通高校

信用卡逾期会有什么影响?如果信用卡已经逾期了怎么办呢?

信用卡逾期会有什么影响?信用卡逾期不还的影响是产生信用污点,信用卡逾期还款记录会进入央行征信系统生成不良信用记录;产生信用卡逾期滞纳

如果信用卡已经逾期了怎么办?信用卡逾期几年后可以消除?

如果信用卡已经逾期了怎么办?1、最好继续使用这张卡逾期后,最好的办法就是继续使用这张卡片,用新的正常的还款记录覆盖原有的负面记录,一

综合资讯

+更多

热点资讯

+更多
股票池是什么意思?股价上涨对上市公司有什么好处?
股票池是什么意思 ?其实股票池是基金投资对象备选库的业内通俗称谓,也就是从股市中挑选出一些比较好的股票来作为基金投资的备选股。在《 [详细]

Copyright @ 2008-2020  www.43710.com   All Right Reserved Powered by 财经情报网 版权所有

财经情报网   联系邮箱:562 66 29@qq.com

网站备案:沪ICP备2020036824号-12