我正在使用SOAP / XML-RPC请求来测试WSDL。另外,我为此请求创建了一个Counter元素。函数之一的每个调用必须在参数之一中包含其他值。
是否可以将最大计数器值保存到文件中?
因此,当我开始测试时,该值将从文件中加载并由计数器增加。
最后,该最大值将再次保存到该文件。依此类推...

最佳答案

让我们删除内置的Counter并传递线程安全的AtomicInteger。
将带有JSR223采样器的setUp线程组(选择groovy作为脚本语言)添加到您的测试计划中。我们将使用它来读取文件中的值。该线程组将在所有其他线程组之前执行,并将为我们提供初始值。
将以下代码添加到采样器:

import java.util.concurrent.atomic.AtomicInteger

counter = new File($/C:\Path\ToFile\fileName.txt/$).text
ai = new AtomicInteger(Integer.valueOf(counter))
props.put("sharedAtomicInteger", ai)


然后在常规线程组中的SOAP / XML-RPC Request之后添加另一个JSR223 Sampler。

将以下代码添加到采样器:

ai = props.get("sharedAtomicInteger")
variable = ai.incrementAndGet()
vars.put("variable", Integer.toString(variable))


现在,临时计数器的值存储在变量中,并且可以在此线程发出的其他请求中使用。

将带有JSR223采样器的teardown线程组添加到您的测试计划中。该线程组将在所有其他线程组之后执行,并将最大值写入文件。

将以下代码添加到采样器:

ai = props.get("sharedAtomicInteger")
new File($/C:\Path\ToFile\fileName.txt/$).write(ai.toString())


最后,您的测试计划应如下所示:


  设置线程组
  
  
    JSR223采样器
  
  
  常规线程组
  
  
    SOAP / XML-RPC请求
    
    JSR223采样器
  
  
  拆线组
  
  
    JSR223采样器
  


附言
请记住,为简便起见,我使用了documentation中不推荐使用的java.util.Properties类的put()方法。

10-04 19:01