zoukankan      html  css  js  c++  java
  • jmeter中引用jar包jsonpath的坎坷之路:

    需求:
    想在jmeter脚本中引入jsonpath的jar包,通过jsonpath提取jmeter的响应结果并断言;
    遇到的问题:
    0
    1、下载的json-path-2.4.0.jar放入jmeter的\lib\ext,执行
    JsonPath.read(jsondata,jsonpathdata).toString();
    在beanshell中总是找不到静态方法read.在idea中也是提示如下错误:java.lang.NoClassDefFoundError:net/minidev/json/writer/JsonReaderI
    0
     
    解决方案:
    一开始毫无头绪,不理解这个报错的意思,于是询问了几个开发大佬,告诉我说是找不到依赖,又自己搜索了一下发现,这个要在maven项目的pom.xml中配置相关依赖才可以使用。就心里有个大概思路,在maven中新建项目然后重新打包jar.
    <dependencies>
        <dependency>
            <groupId>com.jayway.jsonpath</groupId>
            <artifactId>json-path</artifactId>
            <version>2.4.0</version>
        </dependency>
    </dependencies>
    于是果断找开发大佬帮我装了个maven,新建maven项目后,再执行就没有问题了,代码如下。但又有一个新问题,jmeter没有啥maven,怎么把这个用到jmeter上了。于是又开始百度搜索,发现maven可以打jar包与runnable jar包。runnable jar包则会包含相关依赖,那这样的包jmeter肯定能用。于是参考如下文章:https://www.cnblogs.com/guohu/p/11346153.html
    可以看到打jar包时会显示该jar包相应的依赖。再放入jmeter中就可以使用了。我在jar包中写了一个封装方法。其实也可以不写。

    jmeter脚本如下:

    import java.math.BigDecimal;
    import com.*;
    import java.util.Arrays;
    
    
    try {
    
            
    
    String jsondata = prev.getResponseDataAsString();  //获取json数据
    log.info("=获取的json数据=="+jsondata+"======");
    SlbJsonpath slbjp = new SlbJsonpath();
    
    //log.info(slbjp.getS());
    
    String getpath = vars.get("getResponseValue1"); //获取断言的jsonpath路径
    log.info("=jsonpath路径=="+getpath+"======");
    
    String json_response = slbjp.readjson(jsondata,getpath); //提取需要断言的数据
    
    
    log.info("=======json_response============"+json_response+"=================");
    String assert_value = vars.get("assert_value1");
    log.info("============assertvalue1======="+assert_value+"============assertvalue1=======");
    String json_response_result = null;
    
    if (getpath.contains("totalPremiumMax")){
            log.info("开始执行断言最小最大保费");
    //        String no = "{totalPremium=22.22,totalPremiumMax=33.33}";
            String oo = json_response.replace("{totalPremium=","").replace(" totalPremiumMax=","").replace("}","");
            log.info("处理后的最大最小保费"+oo);
            String[] aaa = oo.split(",");
            ArrayList list = new ArrayList();
            for (int i=0;i<aaa.length;i++){
                   String aab = aaa[i];
                   log.info("第i个保费"+aab);
    //               String bd = new BigDecimal(aab).setScale(1,BigDecimal.ROUND_HALF_UP).toString();
                   list.add(aab);
                   log.info("res22==="+aab);
            }
            json_response_result = list.toString().replace(" ","");
            log.info("最终结果为==="+json_response_result);
    }else if (getpath.contains("cusRiskAmnt")){
        log.info("开始执行断言保额");
        json_response_result = json_response.replace("[\"","").replace("\"]","");
        log.info("保额最终的结果为"+json_response_result);
    }else{
        log.info("开始执行断言其他");
        json_response_result = json_response;
    }
    
    
    if(json_response_result.equals(assert_value)){
        log.info("成功拉");
        Failure=false;
        
    }else{
    
        log.info("失败拉");
        Failure=true;
        FailureMessage=aa;
    }
    }catch (Exception e){
        log.info("失败拉");
        Failure=true;
        FailureMessage=aa;
            }

    java jar包代码如下:

    package com;
    
    import com.jayway.jsonpath.JsonPath;
    
    public class SlbJsonpath {
        public static void main(String[] args) {
            SlbJsonpath slbjp = new SlbJsonpath();
            String js = "{\"code\":\"200\"}";
            String s = "$.code";
            String jsondata = slbjp.readjson(js,s).toString();
    //        jsonpath.read(js,s);
            System.out.println(jsondata);
        }
        public static String readjson(String jsondata,String jsonpathdata){
            String data = JsonPath.read(jsondata,jsonpathdata).toString();
            return data;
        }
        public static String getS(){
            return "aa";
        }
    }
  • 相关阅读:
    2.SpringBoot之返回json数据
    1.SpringBoot之Helloword 快速搭建一个web项目
    Jquery获取radio单选按钮的value与后面的文字
    JS点击事件的重叠处理(多个点击事件出现冲突)
    table中的td等长(不随内容大小变化)
    使用ocupload和POI一键上传Excel并解析导入数据库
    将博客搬至CSDN
    【解决方案】SSL证书报错:X509_check_private_key:key values mismatch
    如何设置开机自动重启脚本
    [Linux命令] Top命令详解
  • 原文地址:https://www.cnblogs.com/lelexiong/p/15574116.html
Copyright © 2011-2022 走看看