测试步骤间传递数据
现假设在一个自动化测试计划中,需提取 A 接口
返回数据中的 petId
值并作为 B 接口
的请求参数。下文将通过两个方法,分别演示如何完成接口间的参数传递和连接过程。
- 页面可视化操作
- 根据语法规则操作
页面可视化操作
查看待提取参数
在 B 接口
中定义参数值时点击“魔法棒” icon,选择“读取前置步骤的运行结果”选项。
选择从 A 接口
的响应数据 Body
中提取信息,指定“提取部分”数据。可以在 A 接口的请求响应中看到目标 petId
参数值位于 data
列中。
填写参数名 / 路径
在 B 接口
的 JSONPath
表达式中填写 data.petId
后点击“插入”。你可以查看 JSONPath 语法了解更多复杂的数据提取方法。
为了确保能够正确提取到对应的参数,你可以点击“跳转” icon 预览前置步骤中的预期返回以及是否提取到了正确的数据。
验证参数传递
点击“运行”测试场景。
你可以在测试报告中查看参数的传递情况。可以看到 A 接口
输出的 petId
参数值为 24,而 B 接口
的实际请求值同样为 24,参数传递成功。
实际运行测试场景后,A 接口才能生成数据,B 接口才能真正地得到返回后的数据。在单独调试测试步骤的过程中后置步骤中的接口无法取得前置步骤所生成的返回值。
根据语法规则操作
你也可以在遵循语法规则的前提下,直接填写指令来引用前置步骤的返回数据。
例如现在需要提取 A 接口
返回数据中的 petId
值:
那么可以在 B 接口
中的参数值中填写 {{$.10.response.body.data.petId}}
指令。关于该指令的对照可参考下图:
数字 10
指的是测试步骤 ID。
response.body
指的是从响应 Body 中获取数据。
data.petId
指的是从返回 JSON 文件中提取 data 列中的 petId。
如果指令无误,填写后将会出现“前置步骤”的预览情况。
语法规则表
分类 | 功能点 | 语法示例 |
---|---|---|
请求 | URL | {{$.<步骤 id>.request.url}} |
path 参数 | {{$.<步骤 id>.request.pathParam.<字段名>}} | |
query | {{$.<步骤 id>.request.query.<字段名>}} | |
header | {{$.<步骤 id>.request.header.<字段名>}} | |
body(form) | {{$.<步骤 id>.request.body.<字段名>}} | |
body(json) | {{$.<步骤 id>.request.body.<字段路径>}} | |
响应 | body | {{$.<步骤 id>.response.body.<字段路径>}} |
header | {{$.<步骤 id>.response.header.< 字段名>}} | |
cookie | {{$.<步骤 id>.response.cookie.< 字段名>}} | |
循环 | element(ForEach 循环中的数组内元素) | {{$.<循环步骤 id>.element.<字段路径>}} |
index | {{$.<循环步骤 id>.index}} |