2015-10-06 82 views
0

我想通过JMeter测试随机变量逻辑的应用程序。它是投票申请。随机变量逻辑

流程:登录投票-ReVoting,注销了250个用户

问题:我有投票1人出3名成员,并再次我不得不重新投票给另一个人。我在用户定义的变量中定义了投票成员id,所以首先我使用了bean shell代码进行第一次投票。这里是代码。(Beanshell1)

import java.util.Random; 

String[] categories = (vars.get("categories")).split(","); 

int idx = new Random().nextInt(categories.length); 
String category = (categories[idx]); 

vars.put("rnd_cat",category); 

重新投票,我要排除先前投票的会员ID,所以我用下面的代码为(Beanshell2)

while(category==rnd_cat) 
{ 
    String[] categories = (vars.get("categories")).split(","); 

    int idx2 = new Random().nextInt(categories.length); 
    category = (categories[idx2]); 
} 

,但我我在回应中得到了无效。

回答

0

Beanshell对rnd_cat是什么都不知道。通过==运算符来比较字符串也不是一个好主意。修改你的“Beanshell2”如下:

while(category.equals(vars.get("rnd_cat")) 
{ 
    String[] categories = (vars.get("categories")).split(","); 

    int idx2 = new Random().nextInt(categories.length); 
    String category = (categories[idx2]); 
} 

而且考虑切换到JSR223 Test Elementsgroovy语言,强烈推荐,因为它通过Beanshell vs JSR223 vs Java JMeter Scripting: The Performance-Off You've Been Waiting For!文章证明在JMeter的做脚本的方式。

这完全不要求脚本的另一个很好的选择是通过__chooseRandom()JMeter Plugins

+0

我收到非法字符execpetion..can我们传递变量从beanshell1到beanshell2功能可用? –

+0

如果它们在同一个线程组中 - 'vars.put()'和'vars.get()'。如果在单独的'props.put()'和'props.get()'中。如果没有看到测试计划和完整的Beanshell代码的截图,就不可能说明任何明显的事情 –