修改JMeter上的属性

修改JMeter上的属性,jmeter,Jmeter,我创建了一个有两个线程组的测试计划。每个线程组都有一个SOAP/XML-RPC请求采样器。线程组A还有一个正则表达式提取器,其中包含: Reference Name : ABC Regular Expression :<response>([A-Z 0-9]+)</response> Template: $1$ 我要做的是修改ABC变量,然后将其传递给第二个线程组的SOAP采样器 所以,如果ABC等于1000(response tag包含一个int),我希望得到该值除以

我创建了一个有两个线程组的测试计划。每个线程组都有一个SOAP/XML-RPC请求采样器。线程组A还有一个正则表达式提取器,其中包含:

Reference Name : ABC
Regular Expression :<response>([A-Z 0-9]+)</response>
Template: $1$
我要做的是修改ABC变量,然后将其传递给第二个线程组的SOAP采样器

所以,如果ABC等于1000(response tag包含一个int),我希望得到该值除以2,然后将其传递给第二个采样器,如下所示:

<abcValue>${__P(modifiedABC)}</abcValue>
螺纹组1

请使用“Beanshell后处理器”处理您的请求。将此后处理器添加到提取ABC的采样器下

下面的链接将给你一个想法。

请注意,默认情况下,Jmeter中的所有内容都是字符串。因此,您可能希望在将其除以2之前将其转换为整数。您必须在Beanshell后处理器中添加类似的内容

modifiedABC = Integer.toString(Integer.parseInt(props.get("ABC"))/2);
props.put("modifiedABC",modifiedABC);
螺纹组2

现在您想要访问第二个线程组中的modifiedABC

只需使用

${__P(modifiedABC)}
  • 如果您的响应包含除A-Z、“”或0-9之外的任何内容,则正则表达式提取器将失败。最好将匹配组设置为(+.+),以便它收集响应中的任何内容,并使用单独的正则表达式断言检查内容是否符合预期。这样,当结果不好时,您将得到一个样本失败,而不是当您的下一个样本由于输入错误而形成错误时,随后的失败

  • 在线程组A断言中,您需要一些

    ${uuuu setProperty(“ABC”,“${ABC}”)}

  • 这将一个名为ABC的属性设置为名为ABC的变量的值,我想这就是您想要的

  • 使用_javaScript()函数可以轻松划分值

    ${\uuuJavaScript(${ABC}/2)}


  • 您可以在jmeter中的任何位置使用它,它将替换您所需的值。请确保已检索线程组B开头的属性作为变量(ABC)在不同的范围内。

    检查修改后的答案。使用后处理器。让我知道谢谢你的时间。我得到了编辑中描述的相同错误。Integer.toString部分非常重要。我正在执行props.put(“number.of.threads”,5),但当我的线程执行时,它只运行一次,就好像我没有设置它一样。这修复了它:props.put(““线程数”,字符串.valueOf(4));
    modifiedABC = Integer.toString(Integer.parseInt(props.get("ABC"))/2);
    props.put("modifiedABC",modifiedABC);
    
    ${__P(modifiedABC)}