技术分享 | 接口自动化测试中,如何做断言验证?

网友投稿 275 2022-11-05


技术分享 | 接口自动化测试中,如何做断言验证?

本文节选自霍格沃兹测试开发学社内部教材

在服务端自动化测试过程中,发起请求之后还需要对响应值进行验证。验证响应信息符合预期值之后,这一条接口自动化测试用例才算完整的通过。所以这一章节,将会讲解在接口自动化测试中,如何对服务端返回的响应内容做断言验证。

实战练习

对接口服务发起 HTTP 请求信息,获得响应内容之后,对其做断言验证。

Python 演示代码

在发起请求后,使用一个变量r存储响应的内容,也就是Response对象。

r = requests.get(" "args": {}, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Host": " "User-Agent": "python-requests/2.25.1", "X-Forwarded-Host": " "X-Scheme": " }, "origin": "119.123.205.82", "url": "对象有很多功能强大的方法可以调用,比如直接获取响应头,获取 Unicode 编码后的响应内容,获取二进制的响应内容,获取原始的响应内容等等。

响应断言

响应状态码断言

断言成功

import requestsr = requests.get('r.status_code==200

assert是 python 的内置函数,用来判断表达式,当表达式条件为 False 的时候就会触发异常。r.status_code是 response 对象内的一个方法,用于获得返回值的状态码。assert r.status_code==200 就是在判断状态码是否等于 200,如果不等于 200 则会抛出异常。

断言失败

>>> import requests>>> r = requests.get('assert r.status_code==400Traceback (most recent call last): File "", line 1, in

从以上例子可了解到,此响应状态码实际输出与预期结果状态码 400 不相等,所以抛出了异常。

Json 响应断言

data = { "hogwarts": ["a","b","c"] }r = requests.post('r.status_code == 200assert r.json()["json"]["hogwarts"][0]

响应结果:

"args": {}, "data": "{"hogwarts": ["a", "b", "c"]}", "files": {}, "form": {}, "headers": { ...省略... }, "json": { "hogwarts": [ "a", "b", "c" ] }, "origin": "113.89.8.68", "url": "assert r.json()["json"]["hogwarts"][0] == "a" 对 json 的内容进行断言,其中 r.json() 是获取相应的内容,r.json()["json"] 是获取到 json 的内容,r.json()["json"]["hogwarts"] 是获取到 hogwarts 的内容,r.json()["json"]["hogwarts"][0] 是 hogwarts 下的第一个数据。

Java 演示代码

Java 通过 then 进行断言验证,then() 方法可以对多种不同类型的响应信息进行验证。

断言响应状态码成功

import static io.restassured.RestAssured.*;public class Requests { public static void main(String[] args) { given().when().get(" //通常通过 then 进行断言验证 then().statusCode(200); }}

通过 then() 方法提供的 statusCode() 方法即可实现对于响应状态码的验证,statusCode() 方法通常接收的是 int 类型的参数。statusCode(200) 表示判断响应状态码是否等于 200,如果不等于 200 则会抛出异常。

如果将以上代码中断言验证的代码改成 statusCode(300),那么控制台则会输出异常信息。

Exception in thread "main" java.lang.AssertionError: 1 expectation failed.Expected status code <300> but was <200>.

json 响应断言

import static io.restassured.RestAssured.*;import static org.hamcrest.core.IsEqual.equalTo;public class Requests { public static void main(String[] args){ given().when().get(" then().body("headers.Host", equalTo(" }}

通过 then().body("headers.Host", equalTo("对 json 的内容进行断言,其中 then().body() 是获取相应的内容,第一个参数是从响应内容中提取实际的字段值,第二个参数调用了 equalTo() 方法,并在其中传入了期望结果。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:技术分享 | 接口测试中如何使用Json 来进行数据交互 ?
下一篇:行程码在哪里查询API(行程码在哪里查询)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~