软件测试 测试开发 接口自动化测试中,如何做断言验证?_验证按钮是否能点击断言

54 阅读3分钟

img img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

了解详情》docs.qq.com/doc/DSlVlZExWQ0FRSE9H

{"args":{},"headers":{"Accept":"*/*","Accept-Encoding":"gzip, deflate","Host":"httpbin.ceshiren.com","User-Agent":"python-requests/2.25.1","X-Forwarded-Host":"httpbin.ceshiren.com","X-Scheme":"https"},"origin":"119.123.205.82","url":"https://httpbin.ceshiren.com/get"}复制代码

Response 对象有很多功能强大的方法可以调用,比如直接获取响应头,获取 Unicode 编码后的响应内容,获取二进制的响应内容,获取原始的响应内容等等。

响应断言

响应状态码断言

  • 断言成功
import requests
r = requests.get('https://httpbin.ceshiren.com/get')
assert r.status_code==200复制代码

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

  • 断言失败
>>> import requests
>>> r = requests.get('https://httpbin.ceshiren.com/get')
>>> assert r.status_code==400
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError
复制代码

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

Json 响应断言

data = {
      "hogwarts": ["a","b","c"]
  }
r = requests.post('https://httpbin.ceshiren.com/post',json=data)
print(json.dumps(r.json(),indent=2))
assert r.status_code == 200
assert r.json()["json"]["hogwarts"][0] == "a"
复制代码

响应结果:

"args": {},
  "data": "{"hogwarts": ["a", "b", "c"]}",
  "files": {},
  "form": {},
  "headers": {
    ...省略...
  },
  "json": {
    "hogwarts": [
      "a",
      "b",
      "c"
    ]
  },
  "origin": "113.89.8.68",
  "url": "https://httpbin.ceshiren.com/post"
}
复制代码

通过 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() 方法可以对多种不同类型的响应信息进行验证。

  • 断言响应状态码成功
importstatic io.restassured.RestAssured.*;

publicclassRequests {
    publicstaticvoidmain(String[] args) {
        given().when().get("https://httpbin.ceshiren.com/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 响应断言

img img img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

开源项目:docs.qq.com/doc/DSlVlZExWQ0FRSE9H