当前位置: 首页 > news >正文

Python自动化测试断言详细实战代码

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快

在测试用例中,执行完测试用例后,最后一步是判断测试结果是 pass 还是 fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言assert。

接口请求断言是指在发起请求之后,对返回的响应内容去做判断,用来查看是否响应内容是否与规定的返回值相符。

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

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

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

一、Python 接口自动化断言

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

r = requests.get("https://xxxxx")

响应结果:

{"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://xxxxx"
}

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

响应断言

响应状态码断言

1、断言成功

import requests
r = requests.get('https://xxxxx')
assert r.status_code==200

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

2、断言失败

>>> import requests
>>> r = requests.get('https://xxxxx')
>>> 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://xxxxx',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://xxxx"
}

通过 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("https://xxxxx").//通常通过 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("https://xxxxx").then().body("headers.Host", equalTo("httpbin.ceshiren.com")).log().all();}
}

通过 then().body(“headers.Host”, equalTo(“httpbin.ceshiren.com”)) 对 json 的内容进行断言,其中 then().body() 是获取相应的内容。

第一个参数是从响应内容中提取实际的字段值。

第二个参数调用了 equalTo() 方法,并在其中传入了期望结果。

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

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

http://www.xdnf.cn/news/1269361.html

相关文章:

  • [激光原理与应用-202]:光学器件 - 增益晶体 - Nd:YVO₄增益晶体的制造过程与使用过程
  • 本地连接跳板机
  • 算法_python_学习记录_02
  • 32Nginx配置与多业务部署指南
  • [ MySQL 数据库 ] 多表关联查询
  • vulnhub-Beelzebub靶场通关攻略
  • “高大上“的SpringCloud?(微服务体系入门)
  • 麦当秀|MINDSHOW:在线AI PPT设计工具
  • Java基础-UDP通信实现一发一收
  • java -jar xxx.jar 提示xxx.jar中没有主清单属性报错解决方案
  • cross-env dotenv
  • 版本控制的详细说明介绍(已有github账号版)
  • pytorch+tensorboard+可视化CNN
  • 动手学深度学习(pytorch版):第二章节——预备知识(1)——数据操作
  • 数模个人笔记
  • USRP X310 X410 参数对比
  • ImageJ 实用技巧:通过 Overlay 实现图像透明标记的完整教程
  • 【Git】Visual Studio 实现合并分支
  • 2025年TOP5服装类跟单软件推荐榜单
  • MoVA:多模态视觉专家混合架构的创新设计与应用实践
  • Ubuntu22.04 安装vitis2023.2 卡在“Generating installed device list“.
  • 从反射到方法句柄:深入探索Java动态编程的终极解决方案
  • 机器翻译正则化技术详解:防止过拟合的有效方法
  • Go语言实战案例:文件上传服务
  • 分析报告:基于字节连续匹配技术的KV缓存共享实施可能性及其扩展
  • Leetcode——556. 下一个更大元素 III
  • Kotlin反射详解
  • Docker大全
  • Linux之shell脚本篇(四)
  • 简单聊聊PowerShell