我的目标是从我的线程组中的每个线程POST一些URL,这将在某处创建一个资产。如果一切顺利,第一个请求将创建资产,然后后续请求将看到资产已经创建(或正在创建),并将重用该资产。
我不知道怎么做才是最后一步 - 验证从每个线程中提取的值是否相同。如何在JMeter中完成?
答案 0 :(得分:2)
为了达到您的要求,我们需要在所有线程中共享值。
<强>属性:强>
我们可以使用属性来共享一个值。让我们假设一个道具共享&#39;使用默认值创建为空白&#34;&#34;。在beanshell assertion
中添加以下代码。如果为空,则线程将添加从RegEx中提取的值。所有其他线程只会比较该值,如果它不匹配,它将失败。
if(props.get("shared")==""){
props.put("shared") = "extracted";
}else{
if(!props.get("shared").equals("extracted")){
Failure = true;
}
}
<强> Bsh.shared:强>
我们可以使用bsh.shared共享命名空间在线程之间共享值,并比较所有线程是否具有相同的值。
1.setup threadgroup将包含这样的beanshell代码来创建一个hashset。
import java.util.*;
if (bsh.shared.hashSet == void){
bsh.shared.hashSet=new HashSet();
}
bsh.shared.hashSet.clear();
2.常规线程组将包含用于提取值的代码。提取值后,将其添加到仅存储唯一值的哈希集。任何重复的值都会被忽略。
bsh.shared.hashSet.add("value extracted");
3.teardown threadgroup将分组将检查hashset的大小。如果大小超过1,则失败。
log.info(String.valueOf(bsh.shared.hashSet.size()));
答案 1 :(得分:1)