2017-02-15 108 views
1

嘗試使用while循環生成隨機字符串,但是,每次迭代循環時都會生成相同的數字。有沒有其他的方式來使用while循環生成隨機字符串?在Jmeter中使用While循環的隨機字符串

代碼:

int x=0; 
while(x<10){ 
log.info("generated-------${__RandomString(6,1234567890,)}---"); 
x++; 
} 

Response in logs: 
INFO - jmeter.util.BeanShellTestElement: generated-------908410--- 
INFO - jmeter.util.BeanShellTestElement: generated-------908410--- 
INFO - jmeter.util.BeanShellTestElement: generated-------908410--- 
INFO - jmeter.util.BeanShellTestElement: generated-------908410--- 
INFO - jmeter.util.BeanShellTestElement: generated-------908410--- 
INFO - jmeter.util.BeanShellTestElement: generated-------908410--- 
INFO - jmeter.util.BeanShellTestElement: generated-------908410--- 
INFO - jmeter.util.BeanShellTestElement: generated-------908410--- 
INFO - jmeter.util.BeanShellTestElement: generated-------908410--- 
INFO - jmeter.util.BeanShellTestElement: generated-------908410--- 

回答

1
String y; 
    String extcode1; 

    log.info("------------connecting---------"); 

    public class GenerateRandomString { 

    public static final String DATA = "ABCDEFGHIJKLMNOabcdefghijklmno1234567890"; 
    public static Random RANDOM = new Random(); 

    public static String randomString(int len) { 
     StringBuilder sb = new StringBuilder(len); 

     for (int i = 0; i < len; i++) { 
     sb.append(DATA.charAt(RANDOM.nextInt(DATA.length()))); 
     } 
     y =sb.toString(); 

     log.info(""+y); 
     return sb.toString(); 

    } 

    } 
    int i=0; 
    while(i<10){ 

    extcode1=GenerateRandomString.randomString(6); 

    i++; 
    } 




OUTPUT: 
========= 
2017/03/06 11:59:26 INFO - jmeter.util.BeanShellTestElement: 7BHc2d 
2017/03/06 11:59:26 INFO - jmeter.util.BeanShellTestElement: IDo7oN 
2017/03/06 11:59:26 INFO - jmeter.util.BeanShellTestElement: Gj3mgK 
2017/03/06 11:59:26 INFO - jmeter.util.BeanShellTestElement: iFcDOi 
2017/03/06 11:59:26 INFO - jmeter.util.BeanShellTestElement: ka3gEO 
2017/03/06 11:59:26 INFO - jmeter.util.BeanShellTestElement: KMC9En 
2017/03/06 11:59:26 INFO - jmeter.util.BeanShellTestElement: lFocjE 
2017/03/06 11:59:26 INFO - jmeter.util.BeanShellTestElement: 4kK2dj 
2017/03/06 11:59:26 INFO - jmeter.util.BeanShellTestElement: I3c9an 
2017/03/06 11:59:26 INFO - jmeter.util.BeanShellTestElement: HDAG7k 
1
  1. 我不建議內聯函數到腳本中,你可能會遇到意想不到的行爲,它是更好地使用「參數」部分,而不是
  2. __RandomString()功能不似乎被設計來支持你的使用案例
  3. 最好使用JSR223 Test ElementsGroovy語言而不是Beanshell,這樣你會得到更多的性能,更多的Java c兼容性和更多的語言功能。下面是一個例子Groovy代碼:

    import org.apache.commons.lang.RandomStringUtils; 
    
    1.upto(10, { 
        log.info(RandomStringUtils.randomNumeric(6)) 
    }) 
    

    Groovy random string JMeter

參見Groovy Is the New Black本文的詳細信息和示例