当前位置: 首页 > 时尚 > 内容页

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

2023-06-07 16:27:41 来源:博客园

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

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

标签:

潮流

更多

猜你喜欢

更多
土耳其里拉持续贬值 再创历史新低 世界时讯:3辆全新特斯拉超跑竟被遗弃中国码头13年!原车主身份不简单 2023年养老金能涨多少?养老金涨幅计算公式是这样的 每日资讯 环球今日讯!2023山西省高龄补贴发放标准、年龄划分、补贴金额(完整版) 江苏高龄津贴发放标准:2023年江苏高龄津贴年龄划分、补贴金额究竟是多少? 异动快报:国光连锁(605188)6月7日14点11分触及涨停板-焦点快看 快消息!低成本优势凸显 环球关注:?强行扣10%货款?刚刚,长安汽车回应了! 北京职工医保门诊可以报销吗:北京职工医保门诊报销新规2023年最新 每日观点 江淮汽车(600418)6月7日主力资金净卖出7528.15万元 焦点热闻 美克家居(600337)6月7日主力资金净买入1052.43万元 世界观焦点 环球速读:华夏幸福(600340)6月7日主力资金净卖出115.28万元 多空相互影响 金价延续震荡 全球今头条 暖心!宁夏29名残疾高考生获得延时30%等便利服务 社区关爱高考考生和候考家长 每日速读!约2118万 首钢迁钢能源部二高炉煤气湿式氧化脱硫项目中标候选人公示 全球热文:深圳埃克森新能源获格力金投战略投资 我国网络视听用户10.4亿 市场规模超7000亿元 环球观焦点 贵航股份(600523)6月7日主力资金净卖出316.60万元 江南高纤(600527)6月7日主力资金净买入42.56万元 中国代表:中方对卡霍夫卡水电站堤坝决口表示关切-世界消息 广西举行“弘扬劳模精神、劳动精神、工匠精神,凝聚奋进力量”先进典型记者见面会 全球速看料 焦点速讯:小商品城(600415)6月7日主力资金净买入1.53亿元 澳柯玛(600336)6月7日主力资金净买入96.02万元-今日快讯 中油工程(600339)6月7日主力资金净卖出1606.67万元|环球观天下 即时焦点:陆家嘴论坛将传递金融开放强音 一公司称花2000万可和蔡徐坤约饭 梅西5000万?官方 日本NEC社长:正独立开发生成式AI,这是非常大的商机 环球速读:致考生:逢考必过 大胜归来 螺内酯药是什么药_螺内酯片是什么药物_环球速看料 阴壁有许多白色豆腐渣分泌物无味_白带像豆腐渣怎么回事用什么药|世界滚动 张五不复猎文言文翻译及注释_越人道上遇狗文言文翻译 天天时讯:下血本?皇马给贝林厄姆的合同:税后年薪1000万欧+解约金10亿欧 曝湖人想留下拉塞尔,佩林卡愿意给1.2亿美金,2个原因曝光 世界头条 微动态丨三消息!湖人1.68亿报价AD,火箭补强对象曝光,哈登2选1新东家 动态焦点:李子园发行不超6亿元可转债申请获证监会同意注册批复 天天头条:天元宠物:6月6日融资买入131.17万元,融资融券余额2873.89万元 亚华电子:6月6日融资买入1672.01万元,融资融券余额2724.6万元-天天热推荐 环球热讯:维峰电子:6月6日融资净买入134.23万元,连续3日累计净买入775.19万元 湖南裕能:6月6日融资买入1840.32万元,融资融券余额2.83亿元 天振股份:6月6日融资买入178.83万元,融资融券余额4441.85万元 当前动态 安徽省造老银元价格(2023年06月07日)-全球快看点 2023年1盎司生肖彩银币价格(2023年06月07日)_环球速看料 12生肖公斤银币价格(2023年06月07日)-全球速讯 环球热点评!恒信东方:公司目前没有与英伟达开展合作 业内Chromium115内核首发|海泰红莲花国密浏览器极速版V10_世界快消息 全球今亮点!马斯克:特斯拉可以授权Autopilot/FSD给其它厂商 环球报道:利好黄金!世行下调今年全球经济增长预测,称是“五十年来最弱” 全球热点!碳晶板装修的坑有哪些 喜报!荣登BrandZ中国保险品牌10强榜单|环球看点 中国台球协会:将从严处罚旅英涉赌球员 开展全行业警示教育 天天最新:北京市发布大风蓝色预警 高考来临,这些高考类诈骗套路千万别信! 焦点报道:五一前往五台山的进山车辆停在什么地方? 每日关注!济南高考时间2023年时间表 济南槐荫区外来随迁子女幼升小小学报名要求及条件2023 通达海:6月6日融资买入398.93万元,融资融券余额2847.84万元 滚动:高考试卷是在监狱印刷的?揭秘! 上海警方:男子开车闯红灯与3车碰撞,致1名被撞车辆驾驶员死亡 通讯 强对流预警!沈阳这些地方可能出现龙卷风 【天天时快讯】招商银行装修贷款额度 招商银行 装修贷款 热文:性价比还是品牌?聊聊15万以下韩美车系的优势 长安汽车被传克扣供应商10%未付货款?官方回应了 每日关注!奇瑞小蚂蚁VS五菱宏光缤果?能“称霸”的还得是它! 悦达起亚入选“私家车新车上牌免查验试点企业” 全球视点 业主买42套房要全部打通!官方最新通报️→ 焦点快看 英特尔推出英特尔锐炫Pro A60和Pro A60M图形显卡 每日观察!法网综合 | 焦科维奇、阿尔卡拉斯会师半决赛 “携手共同建设更加美好的未来”(第一现场)|世界热门 醉酒男子欲轻生,太原辅警破门救人英勇负伤-当前热闻 环球观热点:《山西省政务数据安全管理办法》7月1日起施行 全球新动态:金港路办事处:免费体检送健康 便民服务暖人心 环球观速讯丨东南电子:6月6日融资买入139.26万元,融资融券余额1594.71万元 每日动态!蜂助手:6月6日融资买入3256.98万元,融资融券余额9240.5万元 安塞区委书记调研高考准备工作 环球视点 商州区沙河子镇:“新农人”农旅融合助力乡村振兴 个人养老金启动半年产品渐丰富|全球快消息 萝卜家园win10下载-萝卜家园win10 微头条丨一个日一个文读音-一个日一个文 焦点热议:芒种,听取江淮大地“丰”声一片 《月歌行》主题曲是谁唱的?《重生之门》片尾曲叫什么? 小朋友的生态圈简直太无敌了!体验300来块钱小米生态的儿童手表|新资讯 当前热议!双a 什么意思_网络用语双a是什么意思饭圈 【世界快播报】iOS 17 隐藏新特性:增强 Siri 建议、呼唤 Apple Watch 等 《高能少年团》第二季的嘉宾有谁?《高能少年团》校园主播是哪一期? 《我的莫格利男孩》讲述了什么故事?《我的莫格利男孩》凌宇和谁在一起了? 《石头开花》是什么题材剧?《石头开花》之《怒放的山花》在哪里拍的? 今亮点!咸宁积极开展“政路企”合作,优化物流营商环境 《南方车站的聚会》讲了什么?《南方车站的聚会》结局是什么? 《兔子暴力》主要讲了什么?《兔子暴力》结局是什么意思? 为Vision Pro招兵买马,苹果收购AR头显初创公司Mira iOS 17 健康应用引入后续通知,提醒用户不要忘记服药 独家焦点 每日信息:Comate已被注册商标 上海易美口腔-怎样配合医生诊治牙病 清鼻堂:九成人都靠错方法调理鼻炎并发症,你中招了吗?|每日快播 《庭外》有几个篇章?《庭外》冉森和田洋什么关系? 《你好,疯子!》的导演是谁?《你好,疯子!》结局什么意思? 社交牛杂症的梗_网络语社交牛杂症什么意思是好还是坏 空心病有哪些表现_空心病是什么意思都有哪些表现形式 k老师是谁 k老师是什么梗

时尚

  1. 全球微头条丨领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座!

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

  2. 黑龙江老人高龄津贴发放标准2023年:80岁以上高龄老人补助每月多少钱?

    黑龙江老人高龄津贴发放标准2023年:80岁以上高龄老人补助每月多少钱?

  3. 中药行业周报2023年5月第四周:国采来了,再论中药

    中药行业周报2023年5月第四周:国采来了,再论中药

  4. 天通股份(600330)6月7日主力资金净卖出1009.32万元 速看料

    天通股份(600330)6月7日主力资金净卖出1009.32万元 速看料

  5. 比亚迪、小米雷军双双“押中”高考作文题

    比亚迪、小米雷军双双“押中”高考作文题

  6. 天天微资讯!吉林珲春进口百万吨煤炭产业园项目竣工

    天天微资讯!吉林珲春进口百万吨煤炭产业园项目竣工

  7. 海南机场(600515)6月7日主力资金净卖出901.45万元_每日速讯

    海南机场(600515)6月7日主力资金净卖出901.45万元_每日速讯

  8. 视点!北京房山区拱辰街道总工会开启“3新+5心” 职工服务模式

    视点!北京房山区拱辰街道总工会开启“3新+5心” 职工服务模式

  9. 达仁堂(600329)6月7日主力资金净买入1272.65万元-实时

    达仁堂(600329)6月7日主力资金净买入1272.65万元-实时

  10. 华硕ExpertCenterPN53-S1迷你电脑亮相:配备

    华硕ExpertCenterPN53-S1迷你电脑亮相:配备