• 首页
  • 行业
  • 财经
  • 综合
  • 热点
  • 科技
  • 商业
  • 要闻
  • 观点
  • 经济
  • 社会
  • 法治
  • 文旅
  • 体育
  • 健康
  • 生活
  • 国际
  • 国内
  • 教育
logo
  • 汽车 >
  • 正文

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

2023-06-07 16:30:49 来源:博客园

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


【资料图】

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

责任编辑:{ij7}

    为您推荐

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

    “& 160;接口自动化测试是指通过编写代码或使用工具,模拟用户发送请求
  • 速递!国家医保局:1-4月基本医疗保险基金总收入11403.13亿

    国家医保局:1-4月基本医疗保险基金总收入11403 13亿:据国家医保局网
  • 背书转让指的是什么行为?背书转让有哪些主要操作流程?

    背书转让指的是什么行为?背书转让,指收款人以转让票据权利为目的在汇票上签章并作必要的记载所作的一种附属票据行为。背书转让是指以转让
  • 漯河市源汇区外国语小学举行防恐防爆应急演练活动

    为了贯彻落实“安全第一,预防为主”方针,加强学校老师与学生的安全意
  • 无乃尔是过与 翻译无乃_无乃尔是过与 翻译

    想必现在有很多小伙伴对于无乃尔是过与翻译方面的知识都比较想要了解,
  • 上常从容与信言诸将能不文言文翻译通假字_上常从容与信言诸将能不,各有差翻译

    想必现在有很多小伙伴对于上常从容与信言诸将能不,各有差翻译方面的知
  • 文旅部:助力乡村振兴 发挥乡村文旅带头人引领作用|短讯

    6月6日,文化和旅游部印发《乡村文旅带头人支持项目实施方案》(以下简
  • 【世界快播报】战役前线司令部旧址建新馆 平津战役精品展开展

    日前,位于蓟州区礼明庄镇孟家楼村平津战役前线司令部旧址的平津战役精
  • 【独家】【津云社】警惕AI诈骗——天津网络法治小剧场

    天津北方网讯:AI诈骗相比传统电信诈骗成本更低、时速更快、角色更多、
  • 西安思源学院现代通用航空产业学院开展专业建设及访企拓岗调研

    为全面贯彻国家关于高校毕业生就业工作的指导精神,落实校企合作与产教
  • 四川省普通高等学校学生公寓管理办法

    四川省普通高等学校学生公寓管理办法第一章  总则第一条 为进一步推
  • 四川省普通高等学校学生公寓管理办法》解读

    2023年5月15日,四川省教育厅印发《四川省普通高等学校学生公寓管理办
  • 天天热推荐:我的世界神奇宝贝喷火龙怎么mega进化(我的世界神奇宝贝喷火龙配招)

    1、要看你那个版本有没有超进化设定,没有就不行,你开一个创造按e健看
  • 铁角飞驰怎么去(铁角飞地怎么去 魔兽世界7 0至高岭铁角飞地在哪里)|环球看热讯

    1、你好,铁角飞地在破碎群岛-至高岭地图的偏左下方,是采矿和锻造任务
  • 天天观天下!沪指涨0.08%,创指跌1.61%:AI+概念高温不退

    沪指涨0 08%,创指跌1 61%:AI+概念高温不退,沪指,早盘,收盘,创指,创业
  • 宏达股份(600331)6月7日13点24分触及涨停板

    6月7日盘中消息,13点24分宏达股份(600331)触及涨停板。目前价格4 81
  • 东易日盛(002713)6月7日13点29分触及涨停板

    6月7日盘中消息,13点29分东易日盛(002713)触及涨停板。目前价格9 85
  • 【天天热闻】武刚任农业银行首席风险官 曾任该行审计局局长

    6月6日,农业银行(601288 SH)发布公告称,近日该行收到《国家金融监
  • 热头条丨数据确权板块震荡走强 人民网、新华网双双涨停

    数据确权板块震荡走强,人民网、新华网(603888)双双涨停,中广天择(
  • 环球播报:IDC:一季度中国可穿戴设备出货2471万台 手环市场率先回暖

    智通财经APP获悉,6月7日,据IDC最新发布的《中国可穿戴设备市场季度跟
  • 天天最资讯丨第十九届中国(深圳)国际文化产业博览交易会盛大启幕

    第十九届中国(深圳)国际文化产业博览交易会今日上午盛大启幕。证券时
  • 背书如何才能连续起来?背书要有连续性的必要性是什么?

    背书如何才能连续起来?因为非转让背书的被背书人不是票据的真正的所有人,那么,即使允许被背书人再授权他人代行票据权利,该背书仍为非转
  • 焦作:聚焦文旅、餐饮住宿、大宗商品等重点领域,释放消费潜力-消息

    【大河财立方消息】据焦作市人民政府,6月3日,焦作市市长李亦博主持召
  • 广东省商务厅张劲松:广东自贸试验区累计新设企业超过26万家 实际利用外资近500亿美元

    广东省商务厅张劲松:广东自贸试验区累计新设企业超过26万家实际利用外
  • 中国5月末黄金储备6727万盎司

    中国5月末黄金储备6727万盎司
  • ​图知道|2023高考作文你想写哪篇-世界快播报

    2023年高考语文科目考试刚刚结束。一起来看看最新出炉的各地高考作文题
  • 天天热消息:多条铁路线路推行定期票、计次票等新型票制产品

    自6月8日起,宁杭高铁、京港高铁合黄段(合肥南—黄梅东)将正式推出30
  • 随笔:美国“航行自由”的“神逻辑

    新华社北京6月6日电 题:美国“航行自由”的“神逻辑”新华社记者高文
  • 优博讯:公司作为长期专注于AIDC领域的企业,一直致力于为行业客户提供AIDC全栈式解决方案|环球最新

    每经AI快讯,有投资者在投资者互动平台提问:公司的AIDC(自动识别和数
  • 【环球报资讯】比亚迪宋PLUS冠军版将于6月8日开启预售 提供混动版及纯电版

    易车讯我们从比亚迪官方获悉,比亚迪宋PLUS冠军版将于6月8日开启预售。

相关推荐

  • 天天即时:领导看了给你加薪!pytho
  • 速递!国家医保局:1-4月基本医疗保
  • 背书转让指的是什么行为?背书转让
  • 漯河市源汇区外国语小学举行防恐防
  • 无乃尔是过与 翻译无乃_无乃尔是过
  • 上常从容与信言诸将能不文言文翻译
  • 文旅部:助力乡村振兴 发挥乡村文
  • 【世界快播报】战役前线司令部旧址
  • 【独家】【津云社】警惕AI诈骗——
  • 西安思源学院现代通用航空产业学院

阅读排行

  • 每日热门:理想汽车筹备在部分城市开设中心店 扩大销售网络
  • 缺乏背书的连续性实质是什么?什么情况下会缺乏背书的连续性?
  • 《装在口袋里的爸爸》读后感
  • 一看就很有道理的文案
  • 收藏很久的宝藏文案
  • 要闻:无趣文案
  • 自己要坚强的文案
  • 今热点:常用温馨的晚安心语
  • 背书的连续性指的是什么行为?背书行为有几种?
  • 读《不抱怨的世界》有感|全球今头条

291 32 36@qq.com

Copyright © 1998-2015 by 中国北京网版权 所有 京ICP备12018864号-3

营业执照公示信息