当前位置: 首页> 健康> 知识 > 接口自动化测试如何灵活地验证动态变化的response返回数据

接口自动化测试如何灵活地验证动态变化的response返回数据

时间:2025/7/13 4:20:35来源:https://blog.csdn.net/weixin_45754647/article/details/140700894 浏览次数:0次

嗨,我是兰若,很多小伙伴在针对动态返回的response,不知道怎么断言,今天教给大家几种方式,可以在接口自动化测试时确保测试的有效性和灵活性:

1. 断言静态字段

首先,您可以断言一些静态字段的值,这些字段的值是预期不变的。例如,您可以检查 status_codemessage 字段:

response_data = response.json()assert response_data['status_code'] == 6000
assert response_data['message'] == '成功'

2. 检查动态字段的结构和类型

对于动态字段,您可以检查其结构和类型,而不关心具体的值。例如,您可以验证 gameRecordList 的存在以及每个记录的字段类型:

game_record_list = response_data['data']['gameRecordList']# 确保 gameRecordList 是一个列表
assert isinstance(game_record_list, list)# 检查每个记录的结构
for record in game_record_list:assert 'data' in recordassert isinstance(record['data'], list)assert 'day' in record

3. 使用正则表达式验证动态字段

如果某些字段的格式是固定的(例如 ID 或时间戳),您可以使用正则表达式进行验证:

import refor record in game_record_list:for item in record['data']:# 验证 ID 格式assert re.match(r'^YBTY_\\d+_YB$', item['id'])# 验证时间格式assert re.match(r'^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$', item['betTime'])

4. 检查特定字段的值范围或条件

如果您知道某些字段的值应该在特定范围内,可以进行范围检查:

for record in game_record_list:for item in record['data']:# 验证赔率在合理范围内assert 1.0 <= item['odds'] <= 3.0

5. 使用 JSON Schema 验证

使用 JSON Schema 来验证响应的结构和类型,而不关心具体的值。示例:

from jsonschema import validate, ValidationErrorschema = {"type": "object","properties": {"status_code": {"type": "integer"},"message": {"type": "string"},"data": {"type": "object","properties": {"gameRecordList": {"type": "array","items": {"type": "object","properties": {"data": {"type": "array","items": {"type": "object","properties": {"id": {"type": "string"},"siteId": {"type": "integer"},"memberId": {"type": "integer"},"memberName": {"type": "string"},"billNo": {"type": "string"},"gameType": {"type": "integer"},"gameName": {"type": "string"},"odds": {"type": "number"},"betTime": {"type": "string"},# 其他字段...},"required": ["id", "siteId", "memberId", "memberName", "billNo", "gameType", "gameName", "odds", "betTime"]}},"day": {"type": "string"}},"required": ["data", "day"]}},"page": {"type": "integer"},"pageNum": {"type": "integer"},"pageSize": {"type": "integer"}},"required": ["gameRecordList", "page", "pageNum", "pageSize"]}},"required": ["status_code", "message", "data"]
}try:validate(instance=response_data, schema=schema)
except ValidationError as e:print(f"Validation error: {e}")

总结

通过以上方法,可以灵活地验证动态变化的数据,确保接口返回的结构和类型符合预期。

关键字:接口自动化测试如何灵活地验证动态变化的response返回数据

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: