loadruner 参数化有个功能,可以设置在脚本每次出现参数时,自动更换参数值。在做jmeter自动化测试过程中,同一个请求中出现多个参数值,如一个接口可以添加n个信息的请求
[
{
"name": "baidu",
"url": "http://www.baidu.com",
"page": 88,
"isNonProfit": true
},
{
"name": "google",
"url": "http://www.google.com",
"page": 88,
"isNonProfit": true
},
{
"name": "163",
"url": "http://www.163.com",
"page": 88,
"isNonProfit": true
}
]
把name,url ,page ,isNonProfit 参数化,但是这参数实际发送请求的时候都会重复,即如果name 参数选择的是baidu,其他集体记录也是baidu。所以jmeter 原来的配置参数功能无法满足这个需求,只有修改使用beanshell 先从文本中随机读取n条参数(这里的n是3).beanshell脚本为:
// 读文本文件 public static String lineContent(int lineNumber) throws IOException { File file = new File("D:/jscript/bid.txt");//文件路径 FileReader fileReader = new FileReader(file); InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "UTF-8"); BufferedReader reader = new BufferedReader(isr); String txt = ""; int lines = 0; String content = ""; while (txt != null) { lines++; txt = reader.readLine(); if (lines == lineNumber) { content = txt; } } reader.close(); fileReader.close(); return content; } // 获取随机数 public static int getRand(int max, int min) { Random random = new Random(); return random.nextInt(max) % (max - min + 1) + min; } public static ArrayList getParameters() throws IOException{ ArrayList list=new ArrayList(); while (list.size() != 3) { int lineNumber = getRand(2330, 2); // 参数文件最大行数为2330 String lineContent = lineContent(lineNumber); if (!list.contains(lineContent)) { list.add(lineContent); } } return list; } //开始执行的地方 ArrayList list = getParameters(); for(int i=0;i<list.size();i++){ String line = list.get(i); String[] item = line.split("\\t"); System.out.println(item[2]); vars.put("name"+String.valueOf(i),item[0]); vars.put("url"+String.valueOf(i),item[1]); vars.put("page"+String.valueOf(i),item[2]); vars.put("isNonProfit"+String.valueOf(i),item[3]); }
这样就可以在脚本请求中设置参数为:
[ { "name": "${name0}", "url": "${url0}", "page": ${page0}, "isNonProfit": ${isNonProfit0} }, { "name": "${name1}", "url": "${url1}", "page": ${page1}, "isNonProfit": ${isNonProfit1} }, { "name": "${name2}", "url": "${url2}", "page": ${page2}, "isNonProfit": ${isNonProfit2} } ]
这样,每条记录都不一样了。满足了测试的需要。
欢迎关注公众号: