当前位置: 首页>关注 >
领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座! 最新
2023-06-07 21:42:40 来源:博客园
“接口自动化测试是指通过编写代码或使用工具,模拟用户发送请求,验证接口是否符合设计规范和功能需求的过程。”
(资料图)
如何用 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
关键词:
为你推荐
-
领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座! 最新
-
第八次!富国基金再度获得十大明星基金奖 累计获得62项明星基金奖 实时
-
天天观点:台州市路桥区气象台发布大雾黄色预警【Ⅲ级/较重】【2023-06-07】
-
全球快讯:联想王立平:打造三大价值标准,引领商用PC创新发展
-
公司问答丨协鑫能科:多原因删减电池级碳酸锂募投项目 后续围绕三大业务继续发力
-
世界看热讯:科创50ETF期权6月5日上市,“三问三答”这对投资者意味着什么?头部基金经理最新解读
-
各地出台全方面服务保障 营造温馨、舒适高考环境 快看点
-
【天天快播报】丰原药业:公司没有治疗猴痘病毒的药品
-
今日热文:青岛双星:公司目前生产的巨胎规格主要是1000/55R57,该产品已具备成熟的技术工艺水平
-
中国天楹:预中标9497万元道路环卫保洁项目|全球热文
-
外交部:中美保持着必要沟通,美方应当切实尊重中方核心利益和重大关切
-
【全球热闻】养老院敬老院介绍_敬老院与养老院的区别
-
快资讯丨每经操盘必知(下午版)丨创业板指跌1.61% AI概念股逆势大涨;长春高新回应股价跌停;中国消费者协会:警惕培训班退费骗局
-
世界热推荐:榴莲皮拿来煲什么汤最好?
-
每日热闻!安信证券A股中期策略:市场处于磨底阶段但具备较强支撑 第二波TMT正在酝酿开启
-
2023年上教资成绩查询笔试|世界聚看点
-
当前快播:中山火炬开发区12亩宅地重新挂牌 起始总价约1.7亿元
-
全球快播:属龙躲星时间表查询 属龙本命年如何躲星
-
世界热点!漯河养老金上调2023最新方案公布了吗 漯河养老金调整方案计算公式一览
-
碳晶板装修的坑有哪些
推荐内容
- 领导看了给你加薪!python +ddt+excel 一招鲜,
- 第八次!富国基金再度获得十大明星基金奖 累计获
- 天天观点:台州市路桥区气象台发布大雾黄色预警【
- 全球快讯:联想王立平:打造三大价值标准,引领商
- 公司问答丨协鑫能科:多原因删减电池级碳酸锂募投
- 世界看热讯:科创50ETF期权6月5日上市,“三问三
- 各地出台全方面服务保障 营造温馨、舒适高考环境
- 【天天快播报】丰原药业:公司没有治疗猴痘病毒的
- 今日热文:青岛双星:公司目前生产的巨胎规格主要
- 中国天楹:预中标9497万元道路环卫保洁项目|全球
- 外交部:中美保持着必要沟通,美方应当切实尊重中
- 【全球热闻】养老院敬老院介绍_敬老院与养老院的
- 快资讯丨每经操盘必知(下午版)丨创业板指跌1.61
- 世界热推荐:榴莲皮拿来煲什么汤最好?
- 每日热闻!安信证券A股中期策略:市场处于磨底阶段
- 2023年上教资成绩查询笔试|世界聚看点
- 当前快播:中山火炬开发区12亩宅地重新挂牌 起始
- 全球快播:属龙躲星时间表查询 属龙本命年如何躲星
- 世界热点!漯河养老金上调2023最新方案公布了吗
- 碳晶板装修的坑有哪些
- 上柴股份股吧-当前时讯
- 离了罗永浩,“交个朋友”照样转?
- 天天看热讯:命案十三宗真相之菜场_命案十三宗真相
- 6天挣上千元!演唱会相对密集期,揭秘编发美妆的
- 如何打造房地产新发展模式?
- 活久见是出自哪里_活久见是什么意思是褒义还是贬
- 江苏省高二什么时候放假学生今年
- 【世界时快讯】张云雷老婆叫什么_张云雷老婆
- 煲羊肉汤放什么药材补肾_煲羊肉汤放什么药材
- 香港怎么去澳门最快_香港怎么去澳门
- 董媛_关于董媛的简介 世界焦点
- 菜鸟接手申通快递25%股份 后续或将进一步增持
- 石家庄市长安区第十幼儿园举办第二届幼儿自理能力
- 世界消息!高盛将2023年美国夏季天然气预测从之前
- 军训期间注意事项_初中生军训注意事项
- 全球观点:岛屿模拟游戏(手游岛安卓模拟器)
- 渣滓洞的读后感(洞的读后感) 全球热头条
- 天柱县远口镇:“三管双促”凝聚基层党组织合力
- 腾讯+万科!一种很新的合作_焦点简讯
- 有效缓解医院周边拥堵难题 附一院十梓街院区附近
油气
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
经济
-
中新网通辽10月18日电 (记者 张林虎)18日,记者从内蒙古自治区通辽市奈曼旗公安局获悉,国家一级保护动物--梅花鹿误入当地村民羊群,
-
中新网杭州10月18日电 (王题题 胡燕婕)云天收夏色,浅秋正渐浓。10月18日,浙江杭州市西湖游船有限公司推出的惠民多站点“西湖环湖游
-
中新网福州10月18日电 (记者 龙敏 王东明)福州市晋安区官方18日晚间通报,18日14时47分,晋安区岳峰镇化工路爱摩轮商业广场项目摩天
-
中新网兰州10月18日电 (闫姣 艾庆龙 吉翔)“红山白土头,黄河向西流。”不少人疑问,天下黄河向东流,为何甘肃永靖县这段黄河却向西
-
中新网北京10月18日电 《清华城市健康设施指数》18日在北京发布。报告成果显示,城市健康设施指数领先城市以中心城市和东部沿海城市