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

来源:博客园 |2023-06-08 05:02:09

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


【资料图】

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

责任编辑:【henankuaibao】

关键词:

本文相关推荐

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

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

06月08日 05:02 要闻

快讯:新型火车票来了:7天内任意时间可乘车 过期退款

6月6日起,中国铁路昆明局集团有限公司推出了“计次票”。旅客可通过席位预约和直接刷证两种方式,在7天有

06月08日 04:44 业界

当前快看:鲁迅的作品有哪些_鲁迅的作品大全

欢迎观看本篇文章,小升来为大家解答以上问题。鲁迅的作品有哪些,鲁迅的作品大全很多人还不知道,现在让我

06月08日 04:47 要闻

简讯:消费者的权利有哪些举例说明_消费者的权利有哪些

1、在现代市场经济中,国家依照社会经济运行的需要和市场上消费者的主体地位,制定明确的立法,这就使消费

06月08日 04:48 业界

沈阳市气象局发布雷雨大风黄色预警【Ⅲ级/较重】【2023-06-07】

雷雨大风黄色预警信号:预计未来4到6小时,沈阳市和平区、沈河区、大东区、皇姑区、铁西区、于洪区,沈抚示

06月08日 04:48 要闻

重庆市第六次妇女代表大会举行 重庆爱尔梅红、黄韵梅受邀参会

近日,重庆市第六次妇女代表大会举行,重庆爱尔儿童眼科医院CEO梅红及万州爱尔眼科医院院长黄韵梅受邀参会

06月08日 04:52 业界

全球观点:洪都拉斯总统将访华 中国外交部介绍此访安排及期待

中新网北京6月7日电(记者张素)中国外交部发言人汪文斌6月7日主持例行记者会。有记者提问:中方已经发布了洪

06月08日 04:47 要闻

实时:在网络赌博多久会判刑?

以下仅供您参考:1、赌博罪是以营利为目,聚众赌博的行为,如果仅是为了消遣、娱乐的偶然行为不构成犯罪。2

06月08日 04:45 业界

双杰电气:公司公众号由市场部专门负责运营

每经AI快讯,有投资者在投资者互动平台提问:公司微信公众号很久没有更新了,没相应的部门在维护吗?双杰电

06月08日 04:35 要闻

滨江集团:今年截至目前交付的项目已超过10个

每经AI快讯,有投资者在投资者互动平台提问:请问公司2023年6月份有那些楼盘要交付的?公司前期说今年上半

06月08日 04:41 业界

国企领导出差带“小三”逛街?中央巡视组回应:将督促查实

6月7日,网传一位国企领导在成都出差期间,与“小三”牵手逛街,被拍到视频并广泛传播。视频显示,一中年男

06月08日 04:26 要闻

天天速看:“京城养老大调研”引发共鸣

“京城养老大调研”引发共鸣(主题)北京晚报讯(记者魏婧)“父母说老就老了,得为他们的晚年生活盘算盘算

06月08日 04:26 业界

快消息!微软Win12明年发布:底层架构大改 英特尔AMD已做好准备

据报道,微软的Win11系统已经上市一年半了,但是在市场份额上距离Win10还有很大的差距,后者仍然占据着70%

06月08日 04:25 要闻

江苏银行北京广渠门支行:关爱农民工,守住“钱袋子”

江苏银行北京广渠门支行:关爱农民工,守住“钱袋子”

06月08日 04:31 业界

树牢底线思维 强化风险防控 坚决遏制校园安全事故发生_全球信息

6月6日上午,省教育厅联合省公安厅、省卫生健康委、省市场监管局等部门在肥召开全省中小学幼儿园安全工作视

06月08日 04:23 要闻

港股异动 | 美兰空港(00357)跌超4% 海南旅游进入淡季 客流下滑明显_天天资讯

美兰空港(00357)现跌超4%,截至发稿,跌3 53%,报13 12港元,成交额2489 63万港元。

06月08日 04:23 业界

阿尔巴尼亚为什么建地堡?

一、阿尔巴尼亚为什么建地堡?20世纪60年代-80年代,由于阿尔巴尼亚领导人执行“反苏又反美”的外交政策,

06月08日 04:16 要闻

崩坏星穹铁道叠影器特制怎么用[多图]

崩坏星穹铁道叠影器特制怎么用?游戏中,叠影器是黑塔特制的设备,可以叠影从模拟宇宙中获得的特殊光锥,这

06月08日 03:59 业界

实时焦点:阿尔巴尼亚为什么建地堡?

一、阿尔巴尼亚为什么建地堡?20世纪60年代-80年代,由于阿尔巴尼亚领导人执行“反苏又反美”的外交政策,

06月08日 04:14 要闻

崩坏星穹铁道叠影器特制怎么用[多图]|新视野

崩坏星穹铁道叠影器特制怎么用?游戏中,叠影器是黑塔特制的设备,可以叠影从模拟宇宙中获得的特殊光锥,这

06月08日 04:10 业界

东田微06月07日大涨,股价创历史新高 当前热闻

06月07日,东田微股价大涨。截至今日收盘,东田微上涨20 00%,收盘价为61 20元,收盘价创历史新高。湖北东

06月08日 04:07 要闻

商务预报:5月29日-6月4日国内重要生产资料价格情况-天天热资讯

品种价格(元 吨)环比(%)同比(%)动力煤(发热量5000-5500大卡)853-1 2-7 6二号无烟块煤(2号,洗选块

06月08日 03:52 业界

天迈科技拟定增募资不超1.15亿 首季及去年前年均亏损_当前简讯

天迈科技拟定增募资不超1 15亿首季及去年前年均亏损

06月08日 03:47 要闻

世界速递!社区关爱高考考生和候考家长

社区关爱高考考生和候考家长,主流媒体,山西门户。山西新闻网是经国务院新闻办审核批准,由山西日报报业集团

06月08日 03:28 业界

周大生:公司会加大在华东、华南的开店力度|全球热闻

周大生:公司会加大在华东、华南的开店力度

06月08日 03:20 要闻

【擦亮“十有临夏”底色】临夏摄影|全球短讯

临夏摄影炳灵风光鲁肸摄芍药花开王援朝摄国色天香胡兆蓉摄绿色音符董永华摄山乡云海马良山摄水岸人家侯齐摄

06月08日 03:07 业界

土耳其里拉持续贬值 再创历史新低

当地时间6月4日,土耳其新任财政部长穆罕默德·希姆谢克表示,土耳其将回归“理性”经济政策,优先考虑宏观

06月08日 03:13 要闻

华安证券:苹果开拓性MR新品发布 持续催化传媒行业内容生态型企业向好 环球新动态

华安证券指出,在受益于苹果MR产品革命性创新的产业趋势下,内容生态将决定大家对新消费电子产品的依赖程

06月08日 03:05 业界

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

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

06月08日 02:58 要闻

新型火车票来了:7天内任意时间可乘车 过期退款 观察

6月6日起,中国铁路昆明局集团有限公司推出了“计次票”。旅客可通过席位预约和直接刷证两种方式,在7天有

06月08日 03:12 业界