zoukankan      html  css  js  c++  java
  • jmeter beanshell 从文件中获取随机参数

    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}
    }
    ]
    

      这样,每条记录都不一样了。满足了测试的需要。

    欢迎关注公众号:

  • 相关阅读:
    SQL中的全局变量和局部变量(@@/@)
    C# 委托Delegate(一) 基础介绍&用法
    internal in C#
    用代码块在new对象时set属性
    MySql与对应的Java的时间类型
    快速获取当天0点0分0秒(00:00:00)
    IsNullOrWhiteSpace与IsNullOrEmpty
    svn服务器配置 for mac
    CornerStone配置SVN,HTTP及SVN简单使用说明
    svn配置
  • 原文地址:https://www.cnblogs.com/testway/p/11125907.html
Copyright © 2011-2022 走看看