线程中的 JMeter 变量范围
JMeter variable scope in threads
我有一个 JMeter 测试,它执行以下操作:
- 它发出 GET 请求。请求 returns 一些由
Regular Expression Extractor
提取并设置为变量 myId
. 的 ID
- 另一个 GET 请求是使用存储在
myId
中的此 ID 发出的。使用与之前请求返回的相同 ID 很重要。不是任何其他 ID!
这个简单的场景运行良好。但是当我将 "Number of Threads (users)" 从 1 增加到(比方说)5 时,我 运行 陷入并发问题:
- 线程 1 发出 GET 请求并将 ID 分配给
myId
。
- 线程 2 发出 GET 请求并将 ID 分配给
myId
。
- 现在线程 1 运行 再次发出第二个 GET 请求,但 ID 错误,因为线程 2 已经更改了它。现在一切都坏了。
我怎样才能避免这种情况?
由于您对引用使用相同的名称 myId,如果在第二次提取中没有找到任何内容,那么 myId 将包含之前提取的值。
你可以做些什么来检查这个,就是在默认值字段中输入:
nv_myId
根据:
您可以使用 Debug Sampler 来显示变量的内容
我有一个 JMeter 测试,它执行以下操作:
- 它发出 GET 请求。请求 returns 一些由
Regular Expression Extractor
提取并设置为变量myId
. 的 ID
- 另一个 GET 请求是使用存储在
myId
中的此 ID 发出的。使用与之前请求返回的相同 ID 很重要。不是任何其他 ID!
这个简单的场景运行良好。但是当我将 "Number of Threads (users)" 从 1 增加到(比方说)5 时,我 运行 陷入并发问题:
- 线程 1 发出 GET 请求并将 ID 分配给
myId
。 - 线程 2 发出 GET 请求并将 ID 分配给
myId
。 - 现在线程 1 运行 再次发出第二个 GET 请求,但 ID 错误,因为线程 2 已经更改了它。现在一切都坏了。
我怎样才能避免这种情况?
由于您对引用使用相同的名称 myId,如果在第二次提取中没有找到任何内容,那么 myId 将包含之前提取的值。
你可以做些什么来检查这个,就是在默认值字段中输入:
nv_myId
根据:
您可以使用 Debug Sampler 来显示变量的内容