jmeter使用小结

jmeter 脚本执行的命令:

jmeter -n -t /jmxpath/abc.jmx  -l /resultpath/res.jtl

java代码以shell方式执行jmeter命令

 public void exeShell(String sourcePath,String resultPath){
        Process process =null;
        String commond = "jmeter -n -t "+sourcePath+" -l "+resultPath;
        try {
             process = Runtime.getRuntime().exec(commond);
            try {
                int status = process.waitFor();
                if(status!=0){
                    System.err.println("Failed to call shell's command and the return status's is: " + status);
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

获取jmeter脚本执行结果的内容

public String getJmeterResultFile(String resultPath,String resultFileName) throws IOException {
        File file = FileUtils.getFile(resultPath,resultFileName);
        StringBuffer sb=new StringBuffer();
        FileReader fileReader = new FileReader(file);
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        LineNumberReader reader = new LineNumberReader(bufferedReader);
        String line;
        while((line = reader.readLine()) !=null){
            sb.append(line).append(System.getProperty("line.separator"));
        }
        reader.close();
        String content = sb.toString();
        return content;
    }

解析jtl 结果文件,分析断言,判断此次执行是否成功

private List<Map<String,Object>> getAssertContent(String content){
        List<Map<String,Object>> list= new ArrayList<Map<String,Object>>();
        if(StringUtils.isNotBlank(content)){
            //1.创建Reader对象
            SAXReader reader = new SAXReader();

            //2.加载xml
            Document document = null;
            try {
                document = DocumentHelper.parseText(content);
            } catch (DocumentException e) {
                e.printStackTrace();
            }

            //3.获取根节点
            if(null != document){
                Element rootElement = document.getRootElement();
                Iterator iterator = rootElement.elementIterator();
                while (iterator.hasNext()){
                    Element stu = (Element) iterator.next();
                    Iterator iterator1 = stu.elementIterator();
                    while (iterator1.hasNext()){
                        Element stuChild = (Element) iterator1.next();
                        if("assertionResult".equals(stuChild.getName())){
                            // 遍历元素,将数据存到map,再最终把map放到list中
                            Map<String,Object> map = new HashMap<String,Object>();
                            Iterator iterator2 = stuChild.elementIterator();
                            while (iterator2.hasNext()){
                                Element obj = (Element) iterator2.next();
                                map.put(obj.getName(),obj.getStringValue());
                            }
                            String failure = map.get("failure").toString();
                            String error = map.get("error").toString();
                            if("false".equals(failure) && "false".equals(error)){
                                map.put("isSuccess","true");
                            }else{
                                map.put("isSuccess","false");
                            }
                            list.add(map);
                        }
                    }
                }
            }
        }
        return list;
    }
 /**
     * 根据断言结果判断此次jmeter用例执行的测试是否成功
     * @return
     */
    private boolean getTestState(List<Map<String, Object>> assertDataList) {
        boolean flag = true; //表示jmeter测试结果,默认为成功
        if(assertDataList.size()>0){
            for(Map<String, Object> obj : assertDataList){
                String isSuccess = String.valueOf(obj.get("isSuccess"));
                if(StringUtils.isNotBlank(isSuccess) && "false".equals(isSuccess)){
                    flag=false;
                    break;
                }
            }
        }
        return flag;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值