即使我在 Jmeter 中断言失败,我如何继续在 while 控制器中迭代?

How can I continue to iterate in a while controller even if I have a failed assertion in Jmeter?

这就是我正在做的。 我正在使用 While 控制器迭代 CSV 数据文件。我在“CSV 数据集配置”元素中将“STOP THREAD ON EOF”设置为 true,因为我想读取文件中的所有数据。

然后我使用提取的数据发出两个 http 请求,然后比较响应以查看是否有任何差异(这是两个 soap 请求使用相同的正文请求但从两个不同的数据库读取)。我正在使用 BeanShell 断言来比较响应:如果没有差异,我将使用 prev.setSuccessful(true);,所以我有一个绿灯;如果有一些差异,我会使用 prev.setSuccessful(false);,所以我的结果树中有一个红灯。一旦我发现差异我的迭代就会停止,但我想继续这样做,直到我读取 CSV 文件中的所有数据并且我仍然想要一个红灯以便我可以轻松地检查我在哪里有错误。我的 CSV 文件包含数千条记录,我想用所有数据发出我的 http 请求。即使我有一个失败的断言,这也是可能的吗?

这是我的项目树。

谢谢!

默认情况下,JMeter 不会中断任何循环,并且应该在出现错误时继续。检查jmeter.log file,它应该包含停止测试的原因。

因此请仔细检查您的 Thread Group 配置并确保“采样器错误后采取的操作”设置为 Continue

另请注意,使用 Beanshell 是某种形式的表演 anti-pattern、since JMeter 3.1 you're supposed to be using JSR223 Test Elements and Groovy language for scripting so consider migrating to the JSR223 Assertion

我解决了将 ${__javascript("false")} 置于 While 控制器条件

中的问题