Jmeter “重新安置”;线程上下文“;

Jmeter “重新安置”;线程上下文“;,jmeter,Jmeter,我想知道是否有可能在新迭代开始时重置线程上下文(其所有变量) 我遇到的问题是线程保留了以前迭代中的所有变量(及其值),有时它会把事情弄得一团糟 如果我没有弄错的话,在VisualStudio性能测试中,您可以指定“新用户”的百分比,以指示有多少虚拟用户将在下一次测试迭代中重置其上下文 我们是否在JMeter上有类似的本机功能,或者我们需要编写一些代码来实现它 提前谢谢 这取决于您创建的变量类型和使用方式 例如: 正则表达式提取器 在这里,它创建一个变量regex.var,如果响应与表达式匹

我想知道是否有可能在新迭代开始时重置线程上下文(其所有变量)

我遇到的问题是线程保留了以前迭代中的所有变量(及其值),有时它会把事情弄得一团糟

如果我没有弄错的话,在VisualStudio性能测试中,您可以指定“新用户”的百分比,以指示有多少虚拟用户将在下一次测试迭代中重置其上下文

我们是否在JMeter上有类似的本机功能,或者我们需要编写一些代码来实现它


提前谢谢

这取决于您创建的变量类型和使用方式

例如:

  • 正则表达式提取器

在这里,它创建一个变量
regex.var
,如果响应与表达式匹配,它将为其分配一些值。如果下一次迭代与表达式不匹配,它仍将保留上一次迭代的值。要避免此问题,请指定默认值或选中“使用空默认值”。这样每次迭代基本上都会重置值

  • 用户设计变量
    -每个线程都有自己的变量副本,线程可以在整个测试期间修改其变量值。如果您希望在每次迭代中都重新设置,那么这完全是您的责任
我想这可能会有帮助


这取决于您创建的变量类型和使用方式

例如:

  • 正则表达式提取器

在这里,它创建一个变量
regex.var
,如果响应与表达式匹配,它将为其分配一些值。如果下一次迭代与表达式不匹配,它仍将保留上一次迭代的值。要避免此问题,请指定默认值或选中“使用空默认值”。这样每次迭代基本上都会重置值

  • 用户设计变量
    -每个线程都有自己的变量副本,线程可以在整个测试期间修改其变量值。如果您希望在每次迭代中都重新设置,那么这完全是您的责任
我想这可能会有帮助


我不确定您是否真的想要/需要它,但您可以使用JSR223脚本删除所有JMeter变量,包括:


我不确定您是否真的想要/需要它,但您可以使用JSR223脚本删除所有JMeter变量,包括:


嗨,维兹,谢谢你的回答。我真的需要删除所有变量,而不仅仅是重置它们的值,因为对于一些RegularExpression/JSON提取器,我使用MatchNo作为“-1”,因此它会创建“n”个变量,并且它们会继续存储不使用的值。此外,我相信它可能会弄乱一些函数,比如,我还使用它们从“${uuuuu V(extracted_item_uuurandom(1,${extracted_item_matchNr},)}”)中选择一个随机值。嗨,vinz,谢谢你的回答。我真的需要删除所有变量,而不仅仅是重置它们的值,因为对于一些RegularExpression/JSON提取器,我使用MatchNo作为“-1”,因此它会创建“n”个变量,并且它们会继续存储不使用的值。此外,我相信它可能会弄乱一些函数,例如,我还使用它们从“${uuuuu V(extracted\u item\uuuuu random(1,${extracted\u item\u matchNr},)}”中选择一个随机值。我想删除(不仅仅是为了清除它的值)在一个线程迭代中创建的所有变量,因此,当这个线程开始一个新的迭代时,它将没有带空值的变量,而是会创建新的变量。您好user7294900,谢谢您的回答。我想删除(不仅仅是清除它的值)在一个线程迭代中创建的所有变量,因此,当这个线程开始一个新的迭代时,它将没有空值的变量,而是创建新的变量。
for (Map.Entry entry : vars.entrySet()) {    
    vars.put(entry.getKey(), null);
}