【发布时间】:2023-03-25 23:23:01
【问题描述】:
我有一个线程组,它同时运行多个线程。 每个线程都使用 csv 文件中的 ID 发出请求。 因此,随着时间的推移,线程组中的不同线程最终会发出具有相同 ID 的请求。 我想将返回的 cookie 用于请求中的特定 ID,即使它是由不同的线程创建的。
目前我有一个正则表达式提取器提取 cookie 值,它根据其 ID 创建一个变量,例如,其中 ID 为 56789,cookie 为 1234,该变量将为 56789_1234。
然后我使用${__V(${id}_g1)} 拉取 cookie,该 cookie 与另一个请求的特定 ID 相关联。
(本质上是创建了一堆变量,前缀为 ID 和最后返回的 cookie 值,然后每个后续请求都可以使用 ID 为其请求提取正确的 cookie)
然后像这样创建cookie:
import org.apache.jmeter.protocol.http.control.CookieManager;
import org.apache.jmeter.protocol.http.control.Cookie;
CookieManager manager = sampler.getCookieManager();
Cookie AWSALB = new Cookie("AWSALB","${cookieVal}","domain","path",false,Long.MAX_VALUE);
manager.add(AWSALB);
(我使用 jp@gc 将 ${__V(${id}_g1)} 分配给 'cookieVal' - 设置变量操作)
但是,我仍然无法共享在所有线程中创建的变量范围。
我试过属性,但我相信它只适用于线程组之间,如果组连续运行。
我希望组内的所有线程都能够读取其他线程提取的所有变量。
【问题讨论】:
-
您也可以使用 JMeter 属性在同一线程组内的线程之间共享值。
标签: multithreading cookies jmeter blazemeter