Jmeter-每个计划使用一次属性值

Jmeter-每个计划使用一次属性值,jmeter,beanshell,Jmeter,Beanshell,我通过以下方式(beanshell)将所需的值(先前从REST响应中提取)存储在属性中: 稍后,我需要迭代从vms_lst_开始的所有属性的值,随机选择一个,并使用选择的值进行API调用。 如何在每个计划中仅使用一次每个值? 这里的关键是随机选取值,而不是按顺序迭代。 我使用多个线程和多个循环。每个值在每个测试计划中只能使用一次 谢谢请在使用该属性后将其删除,如下所示: props.remove("vms_lst_whatever"); props基本上是正常的,因此您可以调用在JavaDo

我通过以下方式(beanshell)将所需的值(先前从REST响应中提取)存储在属性中:

稍后,我需要迭代从vms_lst_开始的所有属性的值,随机选择一个,并使用选择的值进行API调用。 如何在每个计划中仅使用一次每个值? 这里的关键是随机选取值,而不是按顺序迭代。 我使用多个线程和多个循环。每个值在每个测试计划中只能使用一次


谢谢

请在使用该属性后将其删除,如下所示:

props.remove("vms_lst_whatever");
props
基本上是正常的,因此您可以调用在JavaDoc中看到的任何方法

还应注意,与Beanshell相比,Beanshell:

  • Groovy是更“现代”的语言,支持所有Java语言特性
  • Groovy在JavaSDK之上有很多功能
  • Groovy的性能要好得多

谢谢,但这只是解决方案的一部分。我需要从所有虚拟机中随机选择一个属性,然后删除它。类似于Python中从列表中删除的“pop”方法。有没有类似的东西适合我的需要?如果是,那么我可能需要将这些属性转换为list(array)?例外情况下,我会为您提供一个解决方案,但代码编写服务也不是这样:
def vms_lst_uu2;=props.entrySet().findAll{entry->entry.value.startsWith('vms_lst_2;')}.collect()def randomEntry=vms_lst.get(RandomUtils.nextInt(0,vms_lst.size())props.remove(randomEntry.key)log.info(randomEntry.value)
。谢谢,为我做了一些修改:import org.apache.commons.lang.math.RandomUtils def AAA=props.entrySet().findAll{entry->entry.getKey().toString().contains('vms_lst_uuU')}.collect()def random=new random();def randomEntry=random.nextInt(AAA.size())log.info(“@@@remove”+AAA[randomEntry].getKey())道具。remove(AAA[randomEntry].key)