我认为这是一种常见的情况,虽然我相信我有一个可行的解决方案,但感觉可能是更好的方式。
问题是我需要比Thread Group
- 级Action to be taken after a Sampler error
行为更精细的粒度。我的一些采样器表示会阻止在失败时进一步执行工作流的请求。在这些情况下,我不希望事先处理真实用户无法做出的后续请求,而是无论如何都会失败,我希望线程继续从头开始,继续进行下一个迭代循环。其他采样器代表即使其中一些失败也会继续发出的请求。在这些情况下,我希望线程继续前进。
我现在使用的方法很笨,但似乎有用,如下所示:在Thread-Group
级别,我已将Action to be taken after a Sampler error
设置为Continue
。我认为这意味着默认情况下,如果Sampler失败,线程将继续执行下一条指令,直到它结束。
这会留下我想要在失败时阻止/暂停/重启工作流的请求。我找到的解决方案是使用Critical Actions
If Controller
如果上一个示例失败,则条件!${JMeterThread.last_sample_ok}
应解析为true
。在If Controller
中,我有一个Test Action
来停止执行并开始线程的下一个循环迭代:
我假设Go to next loop iteration
意味着启动线程,假设线程组设置了循环计数。
这个设置似乎有效,因为每次采样器失败时,线程都会从树的顶部开始,然后是If
/ Action
组合。未被此块跟踪的采样器不会因故障而停止执行。
这个设置看起来也非常笨重,而且很烦人,因为我在整个地方复制粘贴这个失败的条件。是否有更优雅的方式来获得这种行为,或者我是否采用了或多或少正确的方式来做到这一点?谢谢!
答案 0 :(得分:4)