Loops 在Jmeter中更改循环中的变量
我有这样的网络请求Loops 在Jmeter中更改循环中的变量,loops,initialization,jmeter,Loops,Initialization,Jmeter,我有这样的网络请求 Loop Controller(3) moreSamples=true startIndex=0 While Controller(${__javaScript(${moreSamples}==true)}) SOAP/XML-RPC Request(index=${startIndex}) Regular Expression Extractor(startIndex=newIndex,moreSamp
Loop Controller(3)
moreSamples=true
startIndex=0
While Controller(${__javaScript(${moreSamples}==true)})
SOAP/XML-RPC Request(index=${startIndex})
Regular Expression Extractor(startIndex=newIndex,moreSamples=samples)
现在的问题是我不能在循环中初始化更多的样本和startIndex。
我尝试了两种选择:
vars.put("moreSamples","false")
vars.put("startIndex","0")
您必须从循环中初始化它们吗?如何将这些添加到用户定义的变量中 或者你也可以从你的循环中完成,它对你不起作用的原因要么是你忘了放分号
代码>在表达式之后:
更新:
您不需要同时使用BSF Sampler
和用户定义的变量。您可以使用其中任何一个,我看到您有更多的用户定义变量,不需要这样做。在测试开始时,使用其中一个。我仍然不清楚你的问题是什么,你在努力实现什么。@bpsingh
你能做到以下几点:
在测试计划顶部添加UserDefinedVariables,其中包含两个已定义的变量:
更多样本,startIndex(如@ant已建议)
在Download-PersistentSyncScope采样器下,您有两个正则表达式提取器,我假设您想在其中提取一些值,并将其放在上述两个变量中。在下载-PersistentSyncScope采样器下添加BeanShellPostProcessor
在Beanshell后处理器中添加以下代码:
这两个(moreSamples,startIndex)是全局变量,它们的变化应该在循环外部可见。实际上,这里的问题是我使用了两个循环,所有答案都没有正确考虑到这一点
由于前置/后置处理器仅应用于采样器,而不应用于循环,因此无法在循环之前重新初始化变量。所以,若我在预处理器中添加initialize语句,循环将无限运行,若在后处理器中,它将永远不会执行。唯一的初始化方法是在while循环之前添加BSF采样器,但这会破坏报告,因为侦听器也会记录此采样器
因此,我找到的唯一解决方案是运行一次下载-PersistentSyncScope采样器,并使用以下脚本添加BSF预处理器
vars.put("moreSamples","false");
vars.put("startIndex","0");
现在添加while循环,并添加Download-PersistentSyncScope采样器作为其子级
这是迄今为止唯一的解决办法。感谢大家帮助我理解这个问题。但是我无法使用正则表达式提取器为它们赋值。@bpsingh发布相关代码/屏幕截图,我或任何人是如何知道这个事实的。不是魔术师SirYes分号是一个问题,它仍然不起作用。我上传了我的循环的截图。我不知道在哪里添加beanshell代码,我已经在所有你在截图中看到被禁用的地方尝试过了。只有在我在两个循环之间添加其他采样器(您可以看到已禁用的PersistentSyncScope-Upload)并将beanshell代码作为post/预处理器添加到此采样器时,它才会起作用。@b Singh我没有看到屏幕快照实际上我无法上传它,因为我是stackoverflow的新手,所以把它添加到你的答案中,它是在说谢谢你的编辑!只有经过同行评审后,此编辑才会对您可见。我想你可能得复习了it@Bakir朱苏菲贝戈维奇尼斯进近+1
START.HMS=101818
START.MS=1341821898080
START.YMD=20120709
TESTSTART.MS=1341822195274
moreSamples=false
startIndex=0
vars.put("moreSamples","${REGEX_EXTRACT1}");
vars.put("startIndex","${REGEX_EXTRACT2}");
vars.put("moreSamples","false");
vars.put("startIndex","0");