Jmeter测试片段和模块控制器

Jmeter测试片段和模块控制器,jmeter,Jmeter,我有一个包含以下内容的测试计划: 测试片段1 BSF取样器1 BSF取样器2 测试片段2 后处理器 线程组1 模块控制器1调用测试片段1 螺纹组2 取样器1 采样器2 取样器 模块控制器2调用测试片段2 第一个测试片段被调用并成功执行。 问题是测试片段2要么没有被调用,要么没有正确执行。 作为BSF后处理器,应该在ThreadGroup中的每个采样器之后调用它,并在文件中写入一些变量。 这种情况不会发生 有没有人能解释一下这个问题,以及为什么它不能正常工作 如果我将测试片段2中

我有一个包含以下内容的测试计划:

测试片段1

  • BSF取样器1
  • BSF取样器2
测试片段2

  • 后处理器
线程组1

  • 模块控制器1调用测试片段1
螺纹组2

  • 取样器1
  • 采样器2
  • 取样器
  • 模块控制器2调用测试片段2
第一个测试片段被调用并成功执行。 问题是测试片段2要么没有被调用,要么没有正确执行。 作为BSF后处理器,应该在ThreadGroup中的每个采样器之后调用它,并在文件中写入一些变量。 这种情况不会发生

有没有人能解释一下这个问题,以及为什么它不能正常工作


如果我将测试片段2中的代码放在ThreadGroup2中,那么它可以正常工作,但这不是我想要的。

您误解了后处理器的概念。 它不会自行执行,它只在采样器运行后运行。 因此,它不执行是绝对正常的,因为它是测试片段的唯一成员。 因此,改用BSF取样器

见:

在您最后的评论之后,您将需要删除模块控制器和测试片段

只需将后处理器置于通用范围内,它将在每个采样器之后执行,请参见:


如果将其设置为取样器,则无法获得所需的效果。想法是在线程组2中的每个采样器之后运行BSF脚本。我不知道我是否正确地解释了自己。测试片段2中的BSF后处理器需要在每个采样器之后运行。我想在测试片段中创建它,原因有二:1。我在一个jmx文件和一个jmx文件中使用了许多线程组。在某些运行中,我需要禁用测试片段,以便它不会运行。如果我将BSF后处理器放在每个线程组中,那么启用和禁用将是困难而乏味的。另外,我希望能够将测试片段移动到一个单独的jmx文件中,并使用Include Controller/Module Controller组合。是的,我的答案是我认为正确的,特别是在阅读了您的更新之后,做您想做的事,只需将后处理器作为线程组2的子线程。不能将后处理器作为从ModuleControl调用的测试片段的唯一子线程,因为它不会被执行。如果你只有一个采样器,你就可以了。