JSR223采样器和JSR223预处理器之间的区别

时间:2020-01-18 08:55:43

标签: jmeter

我是Jmeter的新手,正在积极学习。

我想知道JSR223采样器和JSR223预处理器有何不同,是否可以以与预处理器相同的方式使用采样器?

2 个答案:

答案 0 :(得分:3)

一般的区别是,除非PreProcessor在其范围内有一个采样器(每个采样器为triggered),否则不会执行

Pre-Processor元素被定义为在其范围内更改采样器的设置。它将始终在实际采样器请求之前执行。

具体区别是JSR223 PreProcessor没有可用的SampleResult,因此例如您不能执行以下示例:

SampleResult.setStopTest(true);

SampleResult ResponseData是从脚本的返回值设置的。如果脚本返回null,则可以使用方法SampleResult.setResponseData(data)直接设置响应,其中方法是字符串或字节数组。数据类型默认为“文本”,但可以使用方法SampleResult.setDataType(SampleResult.BINARY)设置为二进制。

SampleResult变量使脚本可以完全访问SampleResult中的所有字段和方法。例如,脚本可以访问方法setStopThread(boolean)setStopTest(boolean)

答案 1 :(得分:2)

JSR223 Sampler是一个Sampler,因此它将生成一个SampleResult,它将出现在测试结果中(除非您调用SampleResult.setIgnore()方法)

JSR223预处理器本身无法执行,您需要根据JMeter Scoping Rules将其连接到一个(或多个)采样器,因此它将在一个(或多个)采样器之前执行。预处理程序的执行时间不会反映在测试结果中(除非您使用配置为包含Transaction Controller的情况)

两者都可以运行任意代码(建议坚持使用Groovy),因此,要使用哪种代码主要取决于您的用例,如果您需要执行负载并测量时间-请使用Sampler ,如果您需要设置一些数据,请使用PreProcessor等。