Python接口自动化测试:断言封装详解

2023-12-20

前言

在进行API接口测试时,断言起着至关重要的作用。断言是用于验证预期结果与实际结果是否一致的过程。在Python中,我们可以利用一些库来实现断言功能。

1. 安装必要的库

在Python中,我们主要会使用两个库: requests jsonpath requests 库用于发送HTTP请求,而 jsonpath 库则用于解析JSON数据。

首先,我们需要安装这两个库。打开命令行,输入以下命令:

pip install requests
pip install jsonpath

2. 封装断言函数

接下来,我们需要编写一个断言函数。该函数负责读取接口返回的信息,并根据预先设定的条件进行断言。以下是一个基本的断言函数示例:

import requests
import jsonpath

def assert_response(response, assertions):
    for assertion in assertions:
        actual_value = jsonpath.jsonpath(response.json(), assertion["jsonpath"])
        expected_value = assertion["expected_value"]
        assert actual_value[0] == expected_value, f"断言失败。期望值为 {expected_value},实际值为 {actual_value[0]}"

在这个函数中,我们首先使用 jsonpath 从JSON数据中提取实际值。然后,我们使用 assert 语句来进行断言,判断实际值是否等于预期值。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

3. 使用断言函数

现在,我们可以在接口测试中使用这个断言函数了。

首先,我们需要发送一个HTTP请求,并获取返回的响应。然后,我们可以使用断言函数来检查响应是否符合预期。

以下是一个示例:

# 发送HTTP请求
url = "<http://example.com/api>"
response = requests.get(url)

# 定义断言
assertions = [
    {
        "jsonpath": "$.status",
        "expected_value": "success"
    },
    {
        "jsonpath": "$.data[0].id",
        "expected_value": 1
    }
]

# 使用断言函数
assert_response(response, assertions)

在这个示例中,我们首先发送一个GET请求到 http://example.com/api 。然后,我们定义了两个断言:一个是检查 status 是否为 success ,另一个是检查第一条数据的 id 是否为1。最后,我们调用 assert_response 函数进行断言。

4. 高级断言示例

除了基本的断言功能之外,我们还可以进行更多的断言操作。以下是一些高级断言示例:

检查列表长度

有时候,我们需要检查返回结果中某个列表的长度是否符合预期。可以通过以下方式进行断言:

assert len(response.json()["data"]) == expected_length

例如,假设我们期望返回的数据列表长度为10,我们可以使用上述断言来验证。

检查关键字存在

有时候,我们需要检查返回结果中是否包含某个关键字。可以通过以下方式进行断言:

assert keyword in response.json()["data"]

例如,假设我们期望返回的数据中包含关键字"example",我们可以使用上述断言来验证。

检查响应时间

有时候,我们需要检查接口的响应时间是否在预期范围内。可以通过以下方式进行断言:

assert response.elapsed.total_seconds() <= expected_time

例如,假设我们期望接口的响应时间不超过5秒,我们可以使用上述断言来验证。

检查状态码

在接口测试中,我们经常需要检查返回的状态码是否符合预期。可以通过以下方式进行断言:

assert response.status_code == expected_status_code

例如,假设我们期望返回的状态码为200,我们可以使用上述断言来验证。

通过这些高级断言操作,我们可以更加灵活地进行接口测试和结果验证。

5. 完全封装的断言方法

除了逐个断言检查外,我们还可以将所有断言封装到一个方法中,以便更方便地进行结果验证。以下是一个完全封装的断言方法示例:

import requests
import jsonpath

def assert_responses(responses, assertions):
    for index, response in enumerate(responses):
        for assertion in assertions[index]:
            actual_value = jsonpath.jsonpath(response.json(), assertion["jsonpath"])
            expected_value = assertion["expected_value"]
            assert actual_value[0] == expected_value, f"断言失败。期望值为 {expected_value},实际值为 {actual_value[0]}"

在这个方法中,我们接受一个包含多个响应的列表和一个包含多个断言的列表。我们使用嵌套循环来遍历每个响应和断言,并进行断言检查。

以下是一个示例:

# 发送HTTP请求
urls = ["<http://example.com/api1>", "<http://example.com/api2>", "<http://example.com/api3>"]
responses = [requests.get(url) for url in urls]

# 定义断言
assertions = [
    [
        {
            "jsonpath": "$.status",
            "expected_value": "success"
        },
        {
            "jsonpath": "$.data[0].id",
            "expected_value": 1
        }
    ],
    [
        {
            "jsonpath": "$.status",
            "expected_value": "success"
        },
        {
            "jsonpath": "$.data[0].name",
            "expected_value": "example"
        }
    ],
    [
        {
            "jsonpath": "$.status",
            "expected_value": "success"
        }
    ]
]

# 使用断言函数
assert_responses(responses, assertions)

在这个示例中,我们发送了三个GET请求到不同的URL,并获得了三个响应。然后,我们定义了三个断言列表,每个列表对应一个响应。我们可以通过调整断言列表来适应不同的测试场景。

通过完全封装的断言方法,我们可以更加灵活地进行多个响应的结果验证。

总结

Python中的断言封装主要涉及到了requests和jsonpath两个库的使用。通过这两个库,我们可以方便地发送HTTP请求,解析JSON数据,以及进行断言。希望这篇文章对于Python中断言封装的理解有所帮助。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python接口自动化测试:断言封装详解 的相关文章

随机推荐

  • 什么是“人机协同”机器学习?

    人机协同 HITL 是人工智能的一个分支 它同时利用人类智能和机器智能来创建机器学习模型 在传统的 人机协同 方法中 人们会参与一个良性循环 在其中训练 调整和测试特定算法 通常 它的工作方式如下 首先 对数据进行人工标注 这就为模型提供了
  • 计算机msvcr120.dll文件丢失怎样修复,只需简单3步即可

    在使用电脑过程中 我们经常会遇到一些错误提示 其中最常见的就是 缺少某个 dll文件 找不到msvcr120 dll文件 那么 msvcr120 dll文件到底是什么呢 当我们遇到这个问题时应该如何解决呢 本文将详细介绍msvcr120 d
  • 用RPA轻松实现智联卓聘招人,提升招聘效率!

    RPA Robotic Process Automation 是一种通过软件机器人模拟和自动执行人类操作的技术 它可以用来处理大量重复性的任务 提高工作效率 减少人力资源的浪费 在智联卓聘招人这个行业场景中 企业需要通过招聘渠道收集大量的简
  • winipsec.dll文件缺少导致程序无法运行问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个winipse
  • 性能测试怎么入门?一文7个知识点带你成功入门!

    一 相关概念 1 性能测试相关 负载测试 性能测试 压力测试 稳定性测试 全链路测试等 2 性能指标 吞吐率 tps 并发用户数 吞吐量 响应时间等 二 性能测试 1 概念解析 通过工具 找出或者获得系统在不同工况下的性能指标值 主要使用性
  • WINSRPC.DLL文件缺少导致无法启动问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个WINSRPC
  • 计算机SSM毕设选题 垃圾分类管理系统(含源码+论文)

    文章目录 1 项目简介 2 实现效果 2 1 界面展示 3 设计方案 3 1 概述 3 2 系统流程 3 2 1 系统开发流程
  • winsrv.dll文件缺少导致程序无法启动问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个winsrv
  • 小程序模版|家政服务小程序源码

    作者主页 编程指南针 作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智
  • 测试开发 | 智能农业引领农业革新,人工智能携手农业改写未来

    互联网40的包值得去吗 回暖分析 战绩结算 on 赛文X 软件技术就业单位分析 山东大厂浪潮集团 国家电网研究院VS杭州华为 华为跟银行怎么选 别焦虑 计算机的同学就业率也很低 华为 薪资爆料 字节电商运营实习面经分享 京东 Java OC
  • <img src=“x“ onerror=“alert(1)“>

    华为上海青浦研究所现状 华为上海青浦研究所现状 华孝子的胜利 xdm西安交行软开和电信西分怎么选 系表情包 一 旷视科技 一面 求问各位嵌入式Linux有什么好的项目 备战春招了 计软转嵌入式经验分享 嵌入式项目 华为上海青浦研究所现状 字
  • ERP和MES之间的联系是什么?

    ERP和MES之间有什么联系 ERP系统像是企业的 大脑 它管理着所有的资源 数据和流程 让企业的各个部门有条不紊地运转 相较之下 MES系统更像是企业的 双手 直接参与到生产过程中 确保生产线上的一切都在按计划进行 这两者虽然关注点不同
  • Different WiFi cards -QCN9274

    华为上海青浦研究所现状 华为上海青浦 值得一去的杭州外企篇 发展稳定 专业不限 双非可入 offer选择 华为上海青浦研究所现状 华为上海青浦研究所现状 华为上海青浦研究所现状 2024届大龄硕士长沙软开求职进展 尾声 牛马 帮选offer
  • Postgresql中PL/pgSQL的游标、自定义函数、存储过程的使用

    场景 Postgresql中PL pgSQL代码块的语法与使用 声明与赋值 IF语句 CASE语句 循环语句 Postgresql中PL pgSQL代码块的语法与使用 声明与赋值 IF语句 CASE语句 循环语句 CSDN博客 上面讲了基本
  • <img src=“x“ onerror=“alert(1)“>

    华为上海青浦研究所现状 华为上海青浦研究所现状 华孝子的胜利 xdm西安交行软开和电信西分怎么选 系表情包 一 旷视科技 一面 求问各位嵌入式Linux有什么好的项目 备战春招了 计软转嵌入式经验分享 嵌入式项目 华为上海青浦研究所现状 字
  • Oracle EBS 指定业务组织内AP发票默认税分类设置

    Oracle EBS 指定业务组织内AP发票默认税分类设置 预期实现 在1个组织内创建的AP发票税费类默认都使用一个税码 税务管理员职责下 默认值和控制 应用产品税选项 业务实体 选择你需要设置的OU 应用名 应付账款 中文 Payable
  • 2024Web自动化测试的技术框架和工具有哪些?

    Web 自动化测试是一种自动化测试方式 旨在模拟人工操作对 Web 应用程序进行测试 这种测试方式可以提高测试效率和测试精度 减少人工测试的工作量和测试成本 在 Web 自动化测试中 技术框架和工具起着至关重要的作用 本文将介绍几种常见的
  • 做测试的你,测试思维掌握了吗?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读1 9k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 如何用RPA实现重庆高校课程平台信息抓取

    重庆高校课程平台是重庆地区各大高校提供的课程信息发布平台 学生和教师可以在上面查询和发布课程相关的信息 然而 由于平台的界面复杂 信息分散 需要大量的手动操作才能获取到需要的信息 给学生和教师带来了很多不便 八爪鱼RPA是一款智能化的机器人
  • Python接口自动化测试:断言封装详解

    前言 在进行API接口测试时 断言起着至关重要的作用 断言是用于验证预期结果与实际结果是否一致的过程 在Python中 我们可以利用一些库来实现断言功能 1 安装必要的库 在Python中 我们主要会使用两个库 requests 和 jso