我正在使用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()方法。