首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用更适合yaml的方式对requests响应进行断言

概述

最近一直在捣鼓 gh action 和 k8s,学习了大量的 yaml 使用示例。

不知不觉对 yaml 有了更深的感受,于是尝试做了一个新工具,旨在用更适合 yaml 的方式对 requests 响应进行断言

理想的用于接口测试的 yaml 大概是这样子

其中:

name、steps字段交给 pytest 处理

request字段交给 requests 处理

response字典交给 本工具处 理

简而言之,本工具实现了像 requests 那样,可以通过 yaml 来编写简单、直观的参数,

用户只需传递这些参数即完成对接口的断言,而不是编写大量的 Python 代码对参数进行判断和处理

除了 requests 外,本工具亦支持和 requests 相同接口的其他接口请求库(例如 HTTPX)

安装

本工具名为responses-validator,暂只支持 python 3.12

安装命令如下

pip install responses-validator

为了演示本文,还需安装依赖(在实际项目,大概你已经安装过了)

pip install requests pytest-yaml-sanmu

基本用法

首先创建两个文件

第一个:配置文件pyetst.ini

[pytest]

run_yaml_case = 1

log_file = pytest.loglog_file_level = infolog_file_format = %(levelname)-8s %(asctime)s [%(name)s:%(lineno)s] : %(message)slog_file_date_format = %H:%M:%S

第二个:pytest 钩子conftest.py

conftest 内容(双击可放大)

自此准备工作已经就绪,接下来进行接口请求和断言

断言成功的例子

创建测试用例test_basic.yaml, 内容如下

然后执行用例

pytest

执行结果和日志内容如下

pytest 执行结果(双击可放大)

日志文件内容(双击可放大)

这表示接口响应完全预期(状态码:200;响应正文:包含 "baidu"),

断言通过!

断言失败的例子

创建测试用例test_failed.yaml, 内容如下

注意这一次,我们修改了response字段的内容,

即使用了新的断言条件:

状态码:404

响应正文:包含sanmu

然后执行用例

pytest

执行结果和日志内容如下

pytest 执行结果(双击可放大)

日志文件内容(双击可放大)

这表示接口响应不预期(状态码和 响应正文 均不符合),

断言失败!

将日志等级调整为DEBUG后,可以看到详细的信息

响应断言的 DEBUG 日志(双击可方法)

由日志内容可见:

responses-validator会根据参数,分别对响应的状态码(status_code)、响应头(headers)、响应正文(text)、JSON 内容(json)进行匹配,

如果任一项,状态是失败(False),则判断测试失败

如果全部项,状态是成功( True),则判断为测试通过

除了状态码外,其他的断言方式都是【可选】,

如果参数值中没有对某个内容进行断言,则匹配状态【忽略】,不参与判断

关于断言的高级用法请见后文更新,敬请关注

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OzRM3xnsTvCf6wl3NltZoK3Q0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券