responses-validator接口断言之状态码

概述

responses-validator 专用于对 reqeuests 的响应对象进行断言,

同时,为了更适用 yaml 的场景,支持了多种灵活、可扩展的写法,可用于搭建yaml接口自动化测试框架。

根据 reqeuests 响应对象的特点,responses-validator 的断言可以分为 4 个部分

  1. 状态码:status_code

  2. 响应头:headers

  3. 响应正文:text

  4. JSON 响应正文:json

这也成为了 responses_validator.validator 方法主要参数:

resp = requests.get("https://www.baidu.com") responses_validator.validator(    resp=resp,     status_code=200,     headers={},     text="",     json={} )

注意:resp 和 status_code 是必填参数,其他参数是选填参数

本文详细叙述了所支持的 4 种状态码断言写法:

  1. 断言单个状态码,如:200

  2. 断言多个状态码,如:200,201,204

  3. 断言单个状态码范围,如:2xx

  4. 断言多个状态码范围,如:2xx, 3xx

更多示例见下文

1. 断言单个状态码

如果状态码只有一个预期值,可以直接传递该值(字符串或数字均可)

如果响应的状态码与 status_code 参数相等,则判定为测试通过,

否则判定为测试失败

创建如下 yaml 用例,其中包含 2 个断言步骤,每个步骤对单个状态码进行断言

# test_status_code_single_value.yamltest_name: 断言状态码匹配单个值steps:  - request:      method: get      url: https://www.baidu.com  - response:      status_code: 200 # 断言通过  - response:      status_code: 201 # 断言失败

注:该请求必定返回状态码 200,下同

执行结果如下:

图片

断言单个状态码日志内容

由日志内容可见,一共进行了 2 次断言,其中:

第一次断言状态码等于 200,断言成功

第二次断言状态码等于 201,断言失败

2. 断言多个状态码

如果状态码有多个预期值,可通过 | 符号进行分隔

如果响应的状态码,与其中任意一个值相等,则判定为测试通过

如果均不相等,则判定为测试失败

创建如下 yaml 用例,其中包含 2 个断言步骤,每个步骤对多个状态码进行断言

# tests/test_status_code_multiple_value.yamltest_name: 断言状态码匹配多个值steps:  - request:      method: get      url: https://www.baidu.com  - response:      status_code: 200 | 201 # 断言通过  - response:      status_code: 401 | 403 # 断言失败

执行结果如下:

图片

断言多个状态码日志内容

由日志内容可见,一共进行了 2 次断言,其中:

第一次断言状态码等于 200 或 201,断言成功

第二次断言状态码等于 401 或 403,断言失败

如果将个断言改为如下内容,则断言成功

response:  status_code: 401 | 403 | 200 # 断言成功

执行结果如下:

图片

断言多个状态码,最后一个断言成功

3. 断言单个范围

如果状态码有多个预期值,例如 200、201、202、203、204...

可通过 * 进行匹配,例如:

  • 20* 代表所有 20 开头的状态码

  • 2* 代表所有 2 开头的状态码

如果响应的状态码,与其中任意一个值相等,则判定为测试通过

如果均不相等,则判定为测试失败

创建如下 yaml 用例,其中包含 2 个断言步骤,每个步骤对单个范围进行断言

# tests/test_status_code_single_range.yamltest_name: 断言状态码单个范围steps:  - request:      method: get      url: https://www.baidu.com  - response:      status_code: 20* # 断言通过  - response:      status_code: 40* # 断言失败

执行结果如下:

图片

断言单个范围日志内容

由日志内容可见,一共进行了 2 次断言,其中:

第一次断言状态码等于 20 开头,断言成功

第二次断言状态码等于 40 开头,断言失败

4. 断言多个范围

如果状态码有多个预期值范围,例如 20*、30*、40* ,可通过 | 符号进行分隔

如果响应的状态码,与其中任意一个范围匹配,则判定为测试通过

如果均不匹配,则判定为测试失败

创建如下 yaml 用例,其中包含 2 个断言步骤,每个步骤对多个范围进行断言

# tests/test_status_code_multiple_range.yamltest_name: 断言状态码匹配多个范围steps:  - request:      method: get      url: https://www.baidu.com  - response:      status_code: 10* | 20* # 断言通过  - response:      status_code: 30* | 40* |50* # 断言失败

执行结果如下:

图片

断言多个范围日志内容

由日志内容可见,一共进行了 2 次断言,其中:

第一次断言状态码等于 10 开头或 20 开头,断言成功

第二次断言状态码等于 30 开头或 40 开头或 40 开头,断言失败

测试开发研习社

《pytest源码剖析》正在连载中,希望对你有所帮助;《jmeter文档通读》正在进行中,希望能够一起进步;《jmeter二次开发》正在筹备中,希望聆听你的想法;

89篇原创内容

公众号

原创不易,喜欢请星标+点赞+在看,关注公众号《测试开发研习社》,不错过技术干货,谢谢鼓励!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值