我正在使用 JMeter 的 JSON 提取器将变量
id
从一个请求传递到另一个请求。
这是第一个请求的响应(https://reqres.in/api/users?page=2):
{
"page": 2,
"per_page": 6,
"total": 12,
"total_pages": 2,
"data": [
{
"id": 7,
"email": "[email protected]",
"first_name": "Michael",
"last_name": "Lawson",
"avatar": "https://reqres.in/img/faces/7-image.jpg"
},
{
"id": 8,
"email": "[email protected]",
"first_name": "Lindsay",
"last_name": "Ferguson",
"avatar": "https://reqres.in/img/faces/8-image.jpg"
},
{
"id": 9,
"email": "[email protected]",
"first_name": "Tobias",
"last_name": "Funke",
"avatar": "https://reqres.in/img/faces/9-image.jpg"
},
{
"id": 10,
"email": "[email protected]",
"first_name": "Byron",
"last_name": "Fields",
"avatar": "https://reqres.in/img/faces/10-image.jpg"
},
{
"id": 11,
"email": "[email protected]",
"first_name": "George",
"last_name": "Edwards",
"avatar": "https://reqres.in/img/faces/11-image.jpg"
},
{
"id": 12,
"email": "[email protected]",
"first_name": "Rachel",
"last_name": "Howell",
"avatar": "https://reqres.in/img/faces/12-image.jpg"
}
],
"support": {
"url": "https://reqres.in/#support-heading",
"text": "To keep ReqRes free, contributions towards server costs are appreciated!"
}
}
在提取器中,我将变量命名为
userID
和 JSON 路径 $..id
匹配编号。 (1) 和默认值 NoIDFound
仅主要示例
我还使用了调试采样器,它没有问题地通过了
现在我在第二个请求中将变量传递为 (https://reqres.in/api/${userID})
我收到 404 Not Found 并且通过的请求是 (https://reqres.in/api/users/NoIDFound)
有人可以告诉我我做错了什么吗?
在没有看到你的测试计划的情况下很难说什么,我有一个假设,你的 JSON Extractor 可能放置不正确。有关更多信息,请参阅JMeter 范围规则用户手册章节
因此,如果您有以下设置:
这意味着 JSON Extractor 将在每个 Sampler 之后执行,在 HTTP 请求 1 之后,它将具有正确的预期值,而在 Debug Sampler 之后,它不会,因为 JSONPath 表达式不会匹配任何内容,您最终将得到默认值值。
因此使 JSON Extractor 成为 HTTP 请求 1 的子级或者使用
调试后处理器代替调试采样器
更多信息: