Jmeter中对接口数据的自动化测试脚本用例1

176 阅读3分钟

接口如下

{
    "UserArea": {
        "infolist": [
            {
                "list": [
                    {
                        "area": [
                            "江苏省-苏州市"
                        ],
                        "gg": "125×200×1000",
                        "gyslxr": "",
                        "gysphone": "",
                        "dw": "m",
                        "gysdz": "",
                        "mc": "花岗岩平石",
                        "supplier": "",
                        "bz": "",
                        "periods": "2020年5月",
                        "sl": "13",
                        "csj": "84.11",
                        "id": "7",
                        "brand": "",
                        "hsj": "94.8",
                        "extfds": ""
                    },
                    {
                        "area": [
                            "江苏省-苏州市"
                        ],
                        "gg": "125×200×1000",
                        "gyslxr": "",
                        "gysphone": "",
                        "dw": "m",
                        "gysdz": "",
                        "mc": "花岗岩侧石",
                        "supplier": "",
                        "bz": "",
                        "periods": "2020年5月",
                        "sl": "13",
                        "csj": "84.11",
                        "id": "7",
                        "brand": "",
                        "hsj": "94.8",
                        "extfds": ""
                    }
                ],
                "belongtype": "xxj"
            },
            {
                "list": [
                    {
                        "area": [
                            "南京"
                        ],
                        "gg": "综合",
                        "gyslxr": "",
                        "gysphone": "",
                        "dw": "t",
                        "gysdz": "",
                        "mc": "钢筋",
                        "supplier": "",
                        "bz": "",
                        "periods": "2020年3月",
                        "sl": "12.702755520813",
                        "csj": "3447.35",
                        "id": "7",
                        "brand": "",
                        "hsj": "3885.26",
                        "extfds": ""
                    }
                ],
                "belongtype": "grk"
            }
        ]
    },
    "ReturnInfo": {
        "Description": "",
        "Code": "1"
    }
}

beanshell断言脚本:判断返回值内容是否匹配

//import org.json.JSONObject;       //需要jmeter的lib/ext中放入 json.jar包
//import org.json.JSONArray;        //导入jsonArray
import org.json.*;                  //直接导入所有json对象和数组,简单方便

String response_data = prev.getResponseDataAsString(); //获取响应信息,接口请求返回值,此处将http请求内的响应信息获取到String类型;
JSONObject object1 = new JSONObject(response_data);    //承接上一行,将String类型的返回值构造成JSONObject对象


JSONObject ReturnInfo1 = (JSONObject)object1.getJSONObject("ReturnInfo");  //获取ReturnInfo里的信息,转换成Josnobject对象
String Code = ReturnInfo1.get("Code").toString();  //获取ReturnInfo里面code的值

JSONObject UserArea = (JSONObject)object1.getJSONObject("UserArea"); //获取UserArea jsonobject对象
JSONArray infolist = UserArea.getJSONArray("infolist");  //获取UserArea下的infolist数组
int len1 = infolist.length(); //获取infolist数组的长度          
String mm =len1.toString();  //将长度转化为str字符串

  
String[] dyresul = new String[2];        //添加数组,这里对应的是自己设置的用户参数        
dyresul[0] = ${test000};
dyresul[1] = ${test001};
String[] yqresul = new String[1];                
yqresul[0] = ${test100};


public class Test4 {
	   public static Set compare(String[] a, String[] b) {
	        // 存储所有元素
	        Set allSet = new HashSet();//实例化HashSet类型的对象
	        
	        // 存储相同的元素
	        Set sameSet = new HashSet();
	        
	        allSet.addAll(Arrays.asList(a));   //将数组转换为list集合
	        for (String i : b) {
	            if(allSet.contains(i)) {
	                sameSet.add(i);
	            }
	        }
	        allSet.addAll(Arrays.asList(b));
	        
	        // 移除相同的元素
	        allSet.removeAll(sameSet);
	        return allSet;
	    }

}   //以上内容是取出2个数组中不同元素的方法脚本,后面会调用Test4类中的方法



if(Code.equals("1"))   //如果code为1则表示接口正常,否则接口异常直接报错
{
	if (mm.equals("2"))   //判断infolist数组长度为1  (这里长度到底是多少?为什么要判断?)
	{
	 for(int k = 0;k <len1;k++)   //遍历infolist数组
		{
		   JSONObject rs1 = (JSONObject)infolist.getJSONObject(k);			             
	        JSONArray list = rs1.getJSONArray("list");   //获取infolist下的list数组        
		    int len2 = list.length();       
		    String mm =len2.toString();		//这行什么意思?	  
		    String jsonStr = list.toString();   //将json型list数组转为json型字符串		 
		    // log.info("jsonstr ="+jsonStr);    //输出json字符串   
                    
                    String[] result1 = new String[len2];    //创建一个长度为len2的字符串型数组,下面输出要用
                    (使用关键字new来创建一个对象也叫类的实例化)	
	 
         
		   for(int j = 0;j <len2;j++)   //遍历list数组
			{
			  JSONObject jsonTemp = (JSONObject)list.getJSONObject(j);   //获取list数组下的对象
			  String liststr = jsonTemp.toString();   //对象jsonTemp转为字符串型
                          result1[j]= liststr;
		      //log.info("result1="+result1[j]);   //输出result数组中每个值	
		     
			}
                        
                        
			new Test4();   //实例化Test类
			
			if(k.toString().equals("0"))
			{			
		    Set dissameElementSet =  Test4.compare(dyresul,result1);   //通过实例化的Test4对象调用compare
	        
	        for(String i : dissameElementSet)  
	        {
	         if(i==null)
	          {  Failure = false; 	 }
	          else{ 
                 FailureMessage = "与dyresul不匹配"; 
			  Failure = true; }	       
	         }				
			}
			else{
			
			   Set dissameElementSet =  Test4.compare(yqresul,result1); 	        
		        for(String i : dissameElementSet)  
		        {
		         if(i==null)
		          { Failure = false;  }
		          else{ 
		            FailureMessage = "与yqresul不匹配"; 
				  Failure = true; }
			 }}
        }
               
	}
	
    else 
    {
		FailureMessage = "infolist长度不对";  // 自定义的信息
		Failure = true;         // 表示断言失败
	}
		
   }

else {
	 FailureMessage = "code有误"; 
	 Failure = false;         // 表示断言成功
	}