zoukankan      html  css  js  c++  java
  • jmeter 多行数据比对(无序);

    页面(设置了排序)返回一个JSON串,数据库查询相关数据(未排序);

    1 Jmeter——beanshell提取响应中的title值;

    1.1复制fastjson-1.2.68.jar 到Jmeter的lib目录下;

    1.2Test Plan中添加json包的路径;

     1.3 beanshell中导入json包;

    1.4 beanshell中获取响应结果作为字符串;

    String rs=prev.getResponseDataAsString();

    1.5 通过JSONArray解析字符串;

    JSONArray pgtitles=JSONArray.parseArray(rs);

    1.6 通过长度,遍历JSONArray中的每个title;

    for(int i=0;i<pgtitles.size();i++){
        String pgtitle=pgtitles.getJSONObject(i).getString("title");
    }  

     

     Jmeter——JDBC请求——结果变量名称:如果指定,这将创建一个包含行映射列表的Object变量。每个映射都包含列名称作为键,并包含列数据作为值;参考:https://jmeter.apache.org/usermanual/component_reference.html#JDBC_Request

    columnValue = vars.getObject(“resultObject”).get(0).get(“列名”);
    如上图,想要获取JDBC请求结果的每条title;
    结果总条数${titles_#}
    for(int i=0;i<${titles_#};i++){
      String dbtitle=vars.getObject("resultt").get(i).get("title");
    }  
    页面响应数据与数据库查询数据进行比对,顺序不定;将title的值作为key存入HashMap中,该key对应的value为该title的数量;
    思路:逐一遍历页面结果的title的值,若是该title的值不存在集合HashMap中,则存入title的值,1;
                       若是该title的值存在集合HahMap中,则查该title对应的value,并存入该title的值,value为num+1;
       逐一遍历数据库结果的title的值,若是该title的值不存在集合HashMap中,则断言失败;
                        若是该title的值存在集合HashMap中,则查该title对应的value,并存入该title的值,value为num-1;
       逐一遍历集合HashMap中所有key的value值,若不为0,则断言失败;
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    import java.util.HashMap;
    String rs=prev.getResponseDataAsString();
    JSONArray ptitle=JSONArray.parseArray(rs);
    HashMap titleSet=new HashMap();//注意这里不要写泛型;不支持
    boolean flag=false;
    if(${searchcount}==${titles_#}){//页面查询条数与数据库查询条数一致;
    	//for(int i=0;i<${searchcount};i++){//将页面结果名称写入Map集合;
    	for(int i=0;i<ptitle.size();i++){//将页面结果名称写入Map集合;
    		String pgtitle=ptitle.getJSONObject(i).getString("title");	
    		if(titleSet.get(pgtitle)!=null){//存在该pgtitle,则数量+1
    			int num=titleSet.get(pgtitle);
    			titleSet.put(pgtitle,++num);
    		}else{
    			titleSet.put(pgtitle,1);
    		}		
    	}
    	for(int i=0;i<${searchcount};i++){//数据库名称存在map集合中,则数量-1;
    		String dbtitle=vars.getObject("resultt").get(i).get("title");		
    		if(titleSet.get(dbtitle)==null){
    			flag=true;
    			Failure=true;
    			FailureMessage="页面搜索结果内容与数据库结果内容不一致;";
    			break;
    		}			
    		int num=titleSet.get(dbtitle);
    		titleSet.put(dbtitle,--num);	
    	}
    	for(int i=0;i<${searchcount};i++){//map集合所有键的值=0,则页面与数据库搜索处理的产品名称完全一致
    		String pgtitle=ptitle.getJSONObject(i).getString("title");	
    		if(titleSet.get(pgtitle)!=0){
    			flag=true;
    			Failure=true;
    			FailureMessage="页面搜索结果内容与数据库结果内容部分产品名称条数不一致;";
    			break;
    		}
    		/*
    		Set<String> keys=titleSet.keySet();//Set集合报错
    		Iterator<String> it=keys.iterator();
    		while(it.hasNext()){
    			String k=it.next();
    			if(titleSet.get(k)!=0){
    				flag=true;
    				Failure=true;
    				FailureMessage="页面搜索结果内容与数据库结果内容部分产品名称条数不一致;";
    				break;
    			}
    		}
    		*/
    	}
    	
    }else{//页面查询条数与数据库查询条数不一致;
    	flag=true;
    	Failure=true;
    	FailureMessage="页面搜索结果与数据库结果条数不一致(<=400条);";
    }
    if(!flag){
    	Failure=false;
    	System.out.println("页面搜索结果与数据库结果完全一致!!!");
    }
    

      

    越努力,越幸运!!! good good study,day day up!!!
  • 相关阅读:
    [国家集训队] Crash 的文明世界
    [国家集训队] middle
    [正睿集训2021] 构造专练
    [正睿集训2021] LIS
    CF482E ELCA
    UVA
    UVA
    UVA
    UVA
    UVA
  • 原文地址:https://www.cnblogs.com/canglongdao/p/13042684.html
Copyright © 2011-2022 走看看