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

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

2023-06-07 23:24: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

责任编辑:{ij7}

    为您推荐

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

    “& 160;接口自动化测试是指通过编写代码或使用工具,模拟用户发送请求
  • 全球通讯!快手极速版怎么领取平台作品奖励 具体操作方法介绍

    快手极速版怎么领取平台作品奖励具体操作方法介绍,
  • 股价再度跳水,长春高新午后跌停,公司回应:生产经营一切正常

    6月7日午后,生长激素龙头长春高新(000661 SZ)股价午盘跳水,随后触
  • 国有大行定期存款利率又要降了!已有股份行率先调整,3%以上寥寥无几

    界面新闻记者从多家银行处获悉,目前利率调整还未开始执行,但部分银行
  • 环球热点!深圳国资委:市属国企总资产破5万亿 资产证券化率也过60%

    观点网讯:6月7日消息,深圳市国资委正式发布《深圳市属国资国企2022社
  • 天天视点!Norges Bank增持万物云(02602)290.36万股 每股作价约28.19港元

    6月2日,NorgesBank增持万物云(02602)290 36万股,每股作价28 1945港元
  • 全球观焦点:港股异动 | ASMPT(00522)涨超5% 机构称行业景气回升驱动戴维斯双击

    ASMPT(00522)尾盘涨超5%,截至发稿,涨4 62%,报74 7港元,成交额9993 91万港元。
  • 干电池行业发展概况 中国干电池行业供给区域及企业竞争格局分析2023_环球即时

    干电池是一种伏打电池,利用某种吸收剂(如木屑或明胶)使内含物成为不会
  • 每日快讯![快讯]安耐杰公布2022年年度分红实施方案

    CFi CN讯:安耐杰(股票代码:839540)公布2022年年度权益分派实施公告
  • 还没有明确的止跌信号!_世界简讯

    一、从时空点看,昨天讲了今天进入时间点市场还存在出现短线低点的希望
  • 经济观察:中国5G商用四周年,交出怎样的成绩单?

    经济观察:中国5G商用四周年,交出怎样的成绩单?,
  • 天天热讯:11位“兰亭奖”书法家齐聚申城 “风华正茂”的青年人用文字创新

    东方网记者熊芳雨6月7日报道:“兰亭奖”是中国书坛最高荣誉,当11位入
  • 环球通讯!土耳其里拉持续贬值 再创历史新低

    过去三年,里拉对美元已贬值67%。而为支撑土耳其里拉汇率,并为经常账
  • 形容秋分的诗句古诗大全(形容秋分的诗句)

    大家好,小乐来为大家解答以上的问题。形容秋分的诗句古诗大全,形容秋
  • 环球快讯:坚持课程改革方向 凸显学科育人价值——专家点评2023年上海高考数学试卷

    6月7日下午,2023年普通高等学校招生全国统一文化考试上海数学科目考试
  • 天宫TV | “圆梦乘组”与“博士乘组”梦幻联动!

    神十五与神十六乘组共同在轨工作生活了约5天的时间,看两个乘组在轨“
  • 再添两宗!白云区两宗成片连片加装电梯方案公布|世界今热点

    近日,白云区汇雅花园小区和心谊路公安宿舍成片连片加装电梯方案在广州
  • 当前消息!收盘丨A股三大指数走势分化,创业板指跌1.61%

    两市超2700只个股上涨。
  • 2023高考数学开考 考生沉着进入考场

    6月7日下午,高考数学科目即将拉开帷幕。西安市第三中学考点外,不少考
  • 环球最新:南开区市场监管局强化高考、中考期间食品安全监管保障工作

    津云新闻讯:2023年高考、中考临近,为保障广大考生考试期间饮食安全,
  • 语文考试结束,考生们表现如何?多图直击深圳高考首日_天天时讯

    祝各位考生金榜题名,圆梦高考!
  • 华富基金黄星霖:迎接数字经济时代,重视数据价值-重点聚焦

    华富基金黄星霖:迎接数字经济时代,重视数据价值
  • 【收评】尿素日内下跌2.63% 机构称国内各地区尿素现货价格小幅上调 基差环比走强|全球新资讯

    行情表现6月7日收盘价当日涨跌幅五日涨跌幅尿素1664 00元 吨-2 63%-3 1
  • 环球今亮点!海联金汇:公司智能制造板块将乘新能源快速发展的大势继续聚焦汽车零部件业务,金融科技板块重点发展移动信息业务和第三方支付业务

    同花顺金融研究中心6月7日讯,有投资者向海联金汇提问,请问刘董,公司
  • 杰创智能:公司暂无人脑工程相关技术 全球观焦点

    同花顺金融研究中心6月7日讯,有投资者向杰创智能提问,贵司在智慧医疗
  • 城市传媒:公司加快对AI领域重大技术突破的引入和应用,日前初步完成服务出版行业的专业大模型“万象”测试版开发,面向内部开启辅助专业图片生成等编发测试工作

    同花顺金融研究中心6月7日讯,有投资者向城市传媒提问,请问公司在人工
  • 华塑科技06月07日主力资金大幅流出

    华塑科技06月07日主力资金净流出1627 59万元,涨跌幅为-4 87%,主力净
  • 领导看了给你加薪!python +ddt+excel 一招鲜,接口自动化测试轻松搞定,测试报告惊艳四座!

    “& 160;接口自动化测试是指通过编写代码或使用工具,模拟用户发送请求
  • 海关总署:前5个月民营企业进出口总额同比增长13.1%-世界信息

    海关总署:前5个月民营企业进出口总额同比增长13 1%
  • 斯宾塞祝贺《暗黑4》发售 开服后爽玩了18小时!

    今日,Xbox老板菲尔·斯宾塞发文祝贺《暗黑破坏神4》发售:祝贺RodFerg

相关推荐

  • 领导看了给你加薪!python +ddt+ex
  • 全球通讯!快手极速版怎么领取平台
  • 股价再度跳水,长春高新午后跌停,
  • 国有大行定期存款利率又要降了!已
  • 环球热点!深圳国资委:市属国企总
  • 天天视点!Norges Bank增持万物云(
  • 全球观焦点:港股异动 | ASMPT(00
  • 干电池行业发展概况 中国干电池行
  • 每日快讯![快讯]安耐杰公布2022年年
  • 还没有明确的止跌信号!_世界简讯

阅读排行

  • 光大银行举办推进粮食安全暨种业振兴会议 环球简讯
  • 浙江婺城“输血+造血”,助力四川道孚铺就致富路
  • 动态:6月6日CBOT小麦连续五个交易日上涨
  • 斯宾塞祝贺《暗黑4》发售 开服后爽玩了18小时! 天天热点评
  • 2023年6月7日苯胺动态
  • 全球快消息!6月7日国内硝酸铵产业链部分价格上涨
  • 安国市场:当归人气依然较旺 行情再创历史新高
  • 6月7日西北地区地炼汽柴油报价暂稳
  • 截至6月4日美国冬小麦抽穗率为82%-环球讯息
  • 基金实时估算净值或将下线_天天短讯

291 32 36@qq.com

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

营业执照公示信息