【发布时间】:2021-11-21 15:04:15
【问题描述】:
两个下拉菜单
1)数组_出发城市包含N个城市 aaa,bbb,ccc,ddd,eee,fff,......nnn
2)数组_到达城市包含N个城市 aaa,bbb,ccc,ddd,eee,fff,......nnn
想从两个字符串中随机选择两个城市,但两个城市不应该匹配
【问题讨论】:
标签: jmeter controller
两个下拉菜单
1)数组_出发城市包含N个城市 aaa,bbb,ccc,ddd,eee,fff,......nnn
2)数组_到达城市包含N个城市 aaa,bbb,ccc,ddd,eee,fff,......nnn
想从两个字符串中随机选择两个城市,但两个城市不应该匹配
【问题讨论】:
标签: jmeter controller
您可以在JSR223 Sampler 中包含以下内容
def cities =["aaa","bbb","ccc","ddd","eee","fff","test"]
//Remove a random city and assign to dep_city
cities.shuffle()
def dep_city = cities.pop()
//Remove a random city and assign to arrival_city
cities.shuffle()
def arrival_city= cities.pop()
//Setting the variables
vars.put("dep_city", dep_city)
vars.put("arrival_city", arrival_city)
SampleResult.setIgnore() //Result is not generated
【讨论】:
首先我不认为你的方法是正确的,测试需要repeatable 并且你的“随机”逻辑可能会导致一个测试运行显示性能问题而下一个没有的情况,因为数据不同。
所以考虑使用parameterization 可能更有意义,即将所有城市放入CSV 文件并使用CSV Data Set Config 读取它们。
如果您真的希望您的测试使用随机数据,并且您在问题中拥有这些字符串形式的“数组”,您可以使用任何合适的JSR223 Test Element 和示例代码来实现随机化喜欢:
def dep_array = 'aaa,bbb,ccc,ddd,eee,fff'
def arr_array = 'aaa,bbb,ccc,ddd,eee,fff'
def getRandomCity(String cities, Object prev) {
def array = cities.split(',')
def rv = array[org.apache.commons.lang3.RandomUtils.nextInt(0, array.size())]
if (prev != null) {
if (rv == prev) {
rv = getRandomCity(array.join(','), prev)
}
}
return rv
}
def dep_city = getRandomCity(dep_array, null)
def arr_city = getRandomCity(arr_array, dep_city)
vars.put('dep_city', dep_city)
vars.put('arr_city', arr_city)
稍后您将能够在需要时访问 ${dep_city} 和 ${arr_city} 的值
【讨论】: