首页 >热点 > > 正文

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

博客园 2023-06-07 21:01:47

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

如何用 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 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座!|世界热议

2023-06-07

宁夏银川:专场招聘促就业_环球聚看点

2023-06-07

奥海科技:公司充电枪除了供应于大客户之外,在自主品牌的线上旗舰店也有售卖-环球微速讯

2023-06-07

语文考试结束,考生们表现如何?多图直击深圳高考首日 全球微资讯

2023-06-07

热点在线丨小鹏全新纯电MPV定名X9 主打“年轻态”市场

2023-06-07

自动挡挡位英文意思_自动挡档位英文 天天信息

2023-06-07

全球要闻:天龙集团:公司四大系统平台已初步实现AI升级植入的运营模式

2023-06-07

世界快资讯:百度翻译翻译_百度安逸

2023-06-07

试用期被辞退有工资补偿吗?

2023-06-07

老人过寿的请柬短信_升学宴请柬短信怎么写 世界热点

2023-06-07

双电感式升-降压DC-DC拓扑结构

2023-06-07

如何看出成交量是卖出的量还是买入的量_怎么看成交量

2023-06-07

王宏图:42年前我参加高考

2023-06-07

【清一色午报】三大股指涨跌不一,宁德时代跌超5%,AI概念股再迎集体反弹-世界动态

2023-06-07

河北师范大学在职MBA在哪报名?考生必看

2023-06-07

天天观焦点:6月7日主力动向揭秘——明日预测

2023-06-07

当前速递!携程联合天津航空发布“京朋冀友 从津飞”空铁联运产品

2023-06-07

下属公司累计被冻结5个银行账户,海南椰岛今日股价开盘即下跌 观热点

2023-06-07

微博设置屏蔽陌生人私信的操作流程

2023-06-07

路由器安装步骤详解_路由器怎么连接 环球快讯

2023-06-07

燃气表显示关阀异常怎么解决_燃气表显示关阀 环球即时看

2023-06-07

简讯:上海事业单位退休金是统一吗?教师退休工资怎么计算的?

2023-06-07

环球快看点丨痛别!陆元九院士逝世

2023-06-07

观天下!2023年老人养老金网上认证方法如下 老人社保网上认证如何操作?

2023-06-07

当前时讯:伊朗国产高超音速导弹首次亮相

2023-06-07

天天观察:奥迪车一万公里保养可以吗_奥迪可以一万公里保养一次吗?

2023-06-07

环球要闻:2023年高考开考 1291万考生报名参考再创历史新高

2023-06-07

天秤女和金牛座男配吗 会为彼此努力!

2023-06-07

天职师大举办女排精神进校园活动 与市体育博物馆共建文化育人基地 每日焦点

2023-06-07

东方铁塔:中标9129.78万元国家电网采购项目

2023-06-07

维峰电子:6月6日融资净买入134.23万元,连续3日累计净买入775.19万元

2023-06-07

天天热讯:海南三亚发布暴雨红色预警 幼儿园、中小学停课

2023-06-07

人民币兑美元中间价报7.1196 调贬121个基点

2023-06-07

如何做巧克力冰棍?|每日资讯

2023-06-07

世界即时:至强cpu天梯图_至强cpu和酷睿的区别

2023-06-07

省财政厅推出“30条”接续政策真人版视频解读_焦点要闻

2023-06-07

全球关注:618大促已到!光威天策跳水价格来袭,装机党千万别错过!

2023-06-07

【全球新要闻】广西邮政快递业下沉布局 “土特产”走向全国大市场

2023-06-07

江西省抚州市2023-06-04 18:23发布暴雨蓝色预警 天天快资讯

2023-06-07

篆刻的古诗有哪些 中国史上有哪些篆刻大师|环球热资讯

2023-06-07

每日热讯!布加迪破纪录的速度运行需要特殊的车轮和精钢

2023-06-07

江苏省高二什么时候放假学生今年_环球视讯

2023-06-07

河南方言中的中二声是什么意思_翻精是什么意思是哪里的方言

2023-06-07

做自媒体可以做主播吗_做主播有发展前景吗 做自媒体和做主播哪个更有前途_世界播资讯

2023-06-07

新冠阳了之后一个月2次月经_一个月来2次月经正常吗 天天快资讯

2023-06-07

原神清心在哪里多 原神清心分布图一览|观速讯

2023-06-07

caj文件格式用什么打开_caj是什么格式的文件 当前看点

2023-06-07

环球热头条丨背靠背条款是什么意思算不算附条款_换头文学是啥意思算不算侵权

2023-06-07

谁赔了夫人又折兵的主人公是谁_是谁赔了夫人又折兵

2023-06-07

崩坏星穹铁道1.1版本PC端移动端预下载现已开启一览_全球快资讯

2023-06-07

三山会馆官网_三山会馆

2023-06-07

推理的女王剧情解说_推理的女王

2023-06-07

江小湖小说全集_江小湖的小说|今日精选

2023-06-07

当前通讯!公共营养师证书样本

2023-06-07

绵阳师范学院教务系统(绵阳师范学院教务网登录入口)

2023-06-07

环球速递!三六零:周鸿祎与胡欢协商离婚,已向后者转让约 68 亿元公司股份

2023-06-07

世界视点!群英赋online 群英赋三国原曲

2023-06-07

当前报道:“北京正变得咄咄逼人”?外交部驳斥

2023-06-07

全球快讯:2022年幼儿园的发展趋势分析(2022年幼儿园的发展趋势)

2023-06-06

《志愿军》亮相推介会 全景式还原新中国立国之战

2023-06-06

天舟五号货运飞船完成与空间站组合体再次交会对接

2023-06-06

卢锡安符文2023_卢锡安符文-世界热资讯

2023-06-06

黑木耳行业企业数量分布及黑木耳行业未来发展趋势预测2023 天天简讯

2023-06-06

环球时讯:暖心护航!铜川多家餐饮店变身“加油站”助力铜川学子圆梦高考

2023-06-06

环球新资讯:博汇纸业:博汇集团及其一致行动人累计质押数量约为3.96亿股

2023-06-06

​上海首个全国“绿水青山就是金山银山”实践创新基地!漕泾探索绿色发展路径|每日关注

2023-06-06

海清主演的电视剧有哪些好看的_海清主演的电视剧有哪些

2023-06-06

【独家】第十四届夏季达沃斯论坛即将举办

2023-06-06

有效缓解医院周边拥堵难题 附一院十梓街院区附近新辟非机动车专属停车位 每日速递

2023-06-06

2023中国美容行业市场发展现状分析

2023-06-06

这首毕业歌唱出我们平凡又深刻的青春

2023-06-06

悦客盟官网_悦客盟什么平台都可以用吗|焦点快看

2023-06-06

热推荐:贝莱德增持泰格医药约61.43万股

2023-06-06

焦点关注:吴起者卫人也原文_吴起者卫人也原文介绍

2023-06-06

北信瑞丰新成长混合基金发布清算报告 剩余财产为393.38万元-全球视讯

2023-06-06

十三五规划的具体内容是什么_十三五规划是什么意思

2023-06-06

高考“吉”时|吉林省126711名考生明日赴考

2023-06-06

多指症切除会影响正常手指吗(多指症)

2023-06-06

今日看点:杭州西溪湿地_杭州西溪

2023-06-06

实时焦点:安徽用绿色铺就高质量发展底色

2023-06-06

青县陈嘴乡落实网格员聘书助推网格工作走深走实|热点

2023-06-06

oppoa11电源键坏了怎么开机_天天简讯

2023-06-06

融资最新持仓曝光!加仓电子、电气设备、传媒|视焦点讯

2023-06-06

天天看点:咸宁出台防洪管理暂行办法

2023-06-06

nokia6120c电池(nokia6120) 速递

2023-06-06

关于何雯娜怀孕怎么回事 何雯娜怀孕几个月了的相关信息|世界热闻

2023-06-06

韦伯望远镜新图揭示恒星诞生

2023-06-06

北青:韦世豪、何超受伤,国足新一期大名单需微调-全球看热讯

2023-06-06

热消息:细化举措,精准发力!顺义商标窗口获全国优秀受理窗口

2023-06-06

【天天聚看点】安庆市民网

2023-06-06

动态焦点:暗黑橄榄球僵尸

2023-06-06

公司营业执照年检时间_公司营业执照年检在什么时候-全球热头条

2023-06-06

购买西蒙地产集团并永不销售的9个理由

2023-06-06

今日热闻!好气啊!韩国竟然对铁观音下了手

2023-06-05

手机问题:iphone12隐私空间怎么设置

2023-06-05

【全球时快讯】宇邦新材:300万股限售股6月8日解禁

2023-06-05

焦点热讯:警惕恶意“被宰记”给旅游“放血”

2023-06-05

南阳市卧龙区公安分局光武派出所:优化营商环境 护航经济发展

2023-06-05

AI继续大涨,500亿白酒股跳水跌停,发生了什么?

2023-06-05

【环球热闻】因装修噪音扰民被投诉,业主欲终止施工被扣2万余元

2023-06-05