zoukankan      html  css  js  c++  java
  • jmeter使用BeanShell断言

    1. 首先存储一个接口的响应结果,如在http请求的BeanShell PostProcessor:

    import java.io.UnsupportedEncodingException;
    
    
    System.out.println(prev.getResponseCode());
    String str = prev.getResponseDataAsString();
    /*
    String result = ${__urldecode(str)};
    System.out.println("------------"+result);
    */
    String result = "";
    try {
                result = java.net.URLDecoder.decode(str, "UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
    System.out.println("--------"+result);
    
    vars.put("result",result);
    log.info(result);
    

     或者是jdbc request中BeanShell PostProcessor:

    columnValue = vars.getObject("testresultvariable").get(0).get("app_id");
    vars.put("value",columnValue);
    

     

    变量存储好后,再需要断言的接口后面添加BeanShell断言,使用Failrue来标识断言失败,FailureMessage标示断言失败的原因,如:

    String result = vars.get("result");
    
    if(!result.contains(""result":2")) {
    	Failure = true;  
    	FailureMessage = "分润查询失败";
    }else{
    	FailureMessage = "分润查询成功";
    	}
    

      

    断言结果是:

    使用第三方jar包,结合fastjar的JSON解析如下:

    import java.util.ArrayList;
    import java.util.List;
    import com.alibaba.fastjson.*;
    import com.jmeter.*;
    
    
    listexc = new ArrayList();
    listexc.add(351);
    listexc.add(301);
    listexc.add(302);
    listexc.add(304);
    listexc.add(305);
    listexc.add(306);
    list = new ArrayList();
    flag = "false";
    
     if ((prev.getResponseCode() != null) && (prev.getResponseCode().equals("200") == true)) {
    		String json = prev.getResponseDataAsString();
    		JSONObject  jo = JSON.parseObject(json);
    		if(jo.containsKey("events")) {
    			JSONArray  ja = jo.getJSONArray("events");
    			if(ja.size()>0) {
    				flag = "true";
    				for(int i = 0;i<ja.size();i++) {
    					System.out.println(ja.get(i));
    					JSONObject joe = ja.getJSONObject(i);
    				     System.out.println(joe.get("eventId"));
    				     list.add(joe.get("eventId"));
    				}
    				System.out.println(list.size());
    				 System.out.println(new EventCompare().compare(listexc,list));	
    				 if(!new EventCompare().compare(listexc,list)){
    				 	Failure = true; 
    	   				FailureMessage = "事件校验失败,预期结果和实际结果不一致,预期事件:"+listexc+" ,实际事件:"+list;
    				 }
    			}else{
    				flag = "false";
    				Failure = true; 
    	   			FailureMessage = "事件校验失败,轮询接口返回没有eventId";
    			}
    			vars.put("result",flag);
    			System.out.println(list.size());
    			/*
    			System.out.println(listexc.containsAll(list));
    			if(listexc.containsAll(list)) {
    				Failure = true; 
    	   			FailureMessage = "事件校验失败";
    				}
    	*/
    		}else {
    			Failure = true; 
    	   		FailureMessage = "事件校验失败,轮询接口返回没有events";
    			}
     }else {
     	Failure = true; 
    	FailureMessage = "事件校验失败,轮询接口返回空";
     	}
    

      

  • 相关阅读:
    vue 项目界面绘制_stylus_iconfont_swiper
    react_结合 redux
    BOM 浏览器对象模型_当前窗口的浏览历史 history 对象
    BOM 浏览器对象模型_Storage 接口
    react_app 项目开发 (9)_数据可视化 ECharts
    react_app 项目开发 (8)_角色管理_用户管理----权限管理 ---- shouldComponentUpdate
    BOM 浏览器对象模型_同源限制
    面试题: 多个 await 处理,有一个失败,就算作失败
    react_app 项目开发 (7)_难点集合
    react_app 项目开发_遇到的坑
  • 原文地址:https://www.cnblogs.com/qiaoyeye/p/6964566.html
Copyright © 2011-2022 走看看