Jmeter:从JSR223预处理器替换当前采样器中的数据

时间:2017-09-21 09:47:31

标签: jmeter

我需要签署我的请求xml并在点击应用程序之前向其添加一个令牌。为此,我使用的是JSR223预处理器,它从当前采样器获取数据,进行必要的更改并将数据放回采样器。这种方法适用于单个线程组。当使用多个线程组时,采样器(在不同的线程组中)之间的数据会互换,从而导致对线程组的请求不正确。下面是我的预处理器中的代码:

import jmeter_plugin.*;
String body = sampler.getXmlData();
log.info(body);
Utils utils=new Utils();
String request=utils.getResponse( body,"url/to/fetch/token");
log.info(request);
sampler.setXmlData(request);

通过为整个测试计划提供单个预处理器并为每个线程组分离预处理器来实现。这两种方法都不起作用。

1 个答案:

答案 0 :(得分:0)

无论你有多少Thread Groups,你的方法都应该正常工作。预处理器在之前范围内执行每个采样器,并且只应修改当前采样器。

快速核对清单:

  1. 确保您使用Groovy作为JSR223预处理器语言
  2. 确保您已勾选Cache compiled script if available

    Groovy Cache Compiled Script

  3. 删除这些log.info行,因为它们会产生不必要的磁盘IO开销
  4. 确保您的Utils班级不使用非Thread Safe
  5. 的方法
  6. 查看sampler.getXmlData()您似乎正在使用JMeter 3.1或更低版本,因为JMeter 3.2中已删除 SOAP / XML-RPC请求,并鼓励用户使用请改用HTTP Request采样器。
  7. 如果您的"签署"算法不是很奇特,如果可以更容易使用WS Security for SOAP JMeter Plugin可以使用JMeter Plugins Manager安装

    JMeter WS Security for SOAP JMeter Plugins Manager