我是Jmeter的新手,正在积极学习。
我想知道JSR223采样器和JSR223预处理器有何不同,是否可以以与预处理器相同的方式使用采样器?
答案 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等。