1、准备接口数据(对比字段,即json数据中需要提取的key对应的值进行对比)

2、配置获取EXCEL数据

3、新建线程,并建两个http请求,分别用于请求新旧接口

4、提取需要对比的内容

5、赋值变量,用于对比请求时取值进行对比

6、新建beanshell取样器

7、新建beanshell断言

import mytest.java.json.*;
import net.sf.json.JSONObject;

String resultV1 = vars.get("oldResult");
String resultV2 = vars.get("newResult");
//log.info(resultV1);

JSONObject jsonObject1=JSONObject.fromObject(resultV1);
JSONObject jsonObject2=JSONObject.fromObject(resultV2);
//print(jsonObject1);
JsonDiff jd = new JsonDiff();
//print(jsonObject1);
String result = jd.compareJsonD(jsonObject1,jsonObject2,null);
if(result != null){
    Failure = true;
    FailureMessage=result;
}

准备JAR包

package mytest.java.json;

import java.util.Iterator;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class JsonDiff {
    public static void main(String[] args) {
        String a = "{\"milestone\": [],\"meeting\": [{\"room_address\": \"11F\",\"start\": \"2019-05-10 00:01:00\",\"meeting_type\": \"2\",\"end\": \"2019-05-11 23:30:00\",\"type\": \"1\",\"locale\": \"\u9C81\u73ED\",\"title\": \"JYF-TEST\u6B63\u5E38\u666E\u901A\u4F1A\u8BAE\",\"meeting_compere\": \"\u53F6\u654F\",\"url\":\"\\/v0\\/WOS\\/#\\/home\\/WOS\\/boardroom\\/personal?title=JYF-TEST\u6B63\u5E38\u666E\u901A\u4F1A\u8BAE&id=45838\"},{\"room_address\": \"10F\",\"start\": \"2019-05-10 00:04:00\",\"meeting_type\":\"3\",\"end\":\"2019-05-1023:30:00\",\"type\":\"1\",\"locale\":\"\u9C81\u73ED1\",\"title\":\"JYF-TEST\u6B63\u5E38\u4F8B\u4F1A\",\"meeting_compere\":\"\u53F6\u654F\",\"url\":\"\\/v0\\/WOS\\/#\\/home\\/WOS\\/boardroom\\/personal?title=JYF-TEST\u6B63\u5E38\u4F8B\u4F1A&id=45840\"}]}";
        String b = "{\"milestone\": [],\"meeting\": [{\"room_address\": \"10F\",\"start\": \"2019-05-10 00:01:00\",\"meeting_type\": \"2\",\"end\": \"2019-05-11 23:30:00\",\"type\": \"1\",\"locale\": \"\u9C81\u73ED\",\"title\": \"JYF-TEST\u6B63\u5E38\u666E\u901A\u4F1A\u8BAE\",\"meeting_compere\": \"\u53F6\u654F\",\"url\":\"\\/v0\\/WOS\\/#\\/home\\/WOS\\/boardroom\\/personal?title=JYF-TEST\u6B63\u5E38\u666E\u901A\u4F1A\u8BAE&id=45838\"},{\"room_address\": \"10F\",\"start\": \"2019-05-10 00:04:00\",\"meeting_type\":\"3\",\"end\":\"2019-05-1023:30:00\",\"type\":\"1\",\"locale\":\"\u9C81\u73ED1\",\"title\":\"JYF-TEST\u6B63\u5E38\u4F8B\u4F1A\",\"meeting_compere\":\"\u53F6\u654F\",\"url\":\"\\/v0\\/WOS\\/#\\/home\\/WOS\\/boardroom\\/personal?title=JYF-TEST\u6B63\u5E38\u4F8B\u4F1A&id=45840\"}]}";
        JSONObject json1 =  JSONObject.fromObject(a);
        JSONObject json2 =  JSONObject.fromObject(b);
        String t = compareJsonD(json1, json2,null);
//        System.out.print("****");
        System.out.print(tmp);
/*        for (int i = 0; i < 10000; i++) {
         if (! json1.toString().equals( json1.toString())) {
            System.out.println(654565);
         }
        }*/
    }
    static String tmp = null;

    public static String compareJsonD(JSONObject json1, JSONObject json2,String key) {
        tmp = null;
        compareJson(json1, json2,null);
        return tmp;
    }
    public static String compareJson(JSONObject json1, JSONObject json2,String key) {
        JSONObject jsonObject1=JSONObject.fromObject(json1);
        JSONObject jsonObject2=JSONObject.fromObject(json2);
        Iterator<String> i = jsonObject1.keys();
        String result1 = "";
//        String tmp = "";
        while (i.hasNext()) {
            key =  i.next();
            result1 = compareJson(jsonObject1.get(key), jsonObject2.get(key),key);
//            System.out.println(result1);
            if(result1 != null){
                if(tmp != null){
                    tmp += result1;
                }
                else{
                    tmp = result1;
                }
            }
        }
//        System.out.println("**********");
//        System.out.println(tmp);
        return tmp;
    }
    public static String compareJson(Object json1,Object json2,String key) {
        String result2 = null;
        if (  json1   instanceof   JSONObject ) {
            result2 = compareJson((JSONObject)  json1  ,(JSONObject)   json2,key);
        }else if (  json1   instanceof   JSONArray  ) {
            compareJson((JSONArray)  json1  ,(JSONArray)   json2,key);
        }else if(json1 instanceof String   ){
            result2 = compareJson((String)  json1  ,(String)   json2,key);
        }else {
            result2 = compareJson(json1.toString(), json2.toString(), key);
        }
        return result2;
    }
    public static String compareJson(String  str1,String str2,String key) {
        String result = null;
        if (!str1.equals(str2)) {
            if (result != null)
            {
                result = "\r\n"+"key:"+key+"\r\n"+"json1:"+ str1 +"\r\n"+"json2:"+str2+"\r\n\r\n";
            }
            else {
                result = "key:"+key+"\r\n"+"json1:"+ str1 +"\r\n"+"json2:"+str2+"\r\n\r\n";
            }
        }
        return result;
    }
    public static void compareJson(JSONArray json1,JSONArray json2,String key) {
        Iterator i1= json1.iterator();
        Iterator i2= json2.iterator();
        while ( i1.hasNext()) {
            compareJson(i1.next(), i2.next(),key);
        }
    }
}

jmeter diff测试(调用JAR包处理)的更多相关文章

  1. jmeter用BeanShell调用jar包对HTTP请求中的参数进行MD5加密

    前提: eclipse.JDK.Jmeter 说明: 本文分为两部分进行配置说明 第一部分:编写JavaMD5加密脚本 第二部分:使用Jmeter的BeanShell进行验证 ************ ...

  2. jmeter 调用jar包 本地加密

    1.因为加密接口是有我们自己加密方式,所有加密包由开发提供,获得加密包后方式jmeter目录/lib/ext文件夹中 2.选择引入加密包 3.添加BeanShell Sampler和Debug Sam ...

  3. Unity调用Android的两个方式:其一、调用jar包

    unity在Android端开发的时候,免不了要调用Java:Unity可以通过两种方式来调用Android:一是调用jar.二是调用aar. 这篇文章主要讲解怎么从无到有的生成一个jar包,然后un ...

  4. Loadrunner11.0调用Jar包

    又好几天不写东西了,是不是意味着最近没有大的进步,时时敲打自己. 今天把loadrunner如何调用Jar包搞定了,现在把配置的过程中需要注意的东西写下来,分享给小伙伴儿,减少他们在前行路上的弯路. ...

  5. winform调用jar包

    因为工作需要,需要做一个数据上传的程序,客户规定的是:数据接口采用http连接,采用JSON-RPC轻量级远程调用协议.所以决定用winform做一个管理界面(其中还包括其他的功能),java完成数据 ...

  6. (转载)Python 的 JPype 模块调用 Jar 包

    Python 的 JPype 模块调用 Jar 包 背景与需求 最近学习并安装使用了HttpRunner框架去尝试做接口测试,并有后续在公司推广的打算. HttpRunner由Python开发,调用接 ...

  7. Python调用jar包中的方法

    [本文出自天外归云的博客园] 需求 最近在后台项目代码中一段自定义的AES加解密的程序在平时的测试工作中应用频繁.因为写脚本经常会需要使用,而经过各种尝试,比如jpype等,都不尽如人意.最后转换思路 ...

  8. 如何制作Jar包并在android中调用jar包

    android制作jar包: 新建android工程,然后右击,点击导出,选择导出类型为Java下的JAR file,在java file specification 中不要选择androidmani ...

  9. Unity调用Android的两种方式:其一、调用jar包

    unity在Android端开发的时候,免不了要调用Java:Unity可以通过两种方式来调用Android:一是调用jar.二是调用aar. 这篇文章主要讲解怎么从无到有的生成一个jar包,然后un ...

  10. html实现调用jar包

    整体思路:html引用URL protocol-本地注册表key,key对应某一c#写的exe可执行文件,由exe可执行文件调用cmd,cmd执行jar包. 1.添加注册表: Windows Regi ...

随机推荐

  1. s:if

    <s:iterator value="value[3]" id="ques" status="s"> <s:if test ...

  2. 官方文档Core Technologies - Part 1

    首先介绍系列文章内容及Spring Framework官方文档情况. 在这一系列学习中,我阅读的主要资源是5.1.2 Reference Doc.,以及论坛大神的讲解blog.另外,Spring官方也 ...

  3. Codeforces Round #261 (Div. 2) B. Pashmak and Flowers 水题

    题目链接:http://codeforces.com/problemset/problem/459/B 题意: 给出n支花,每支花都有一个漂亮值.挑选最大和最小漂亮值得两支花,问他们的差值为多少,并且 ...

  4. JavaScript中浮点数的保留小数位数的问题

    方法一 简介:如题! 繁琐版... 代码如下: var significantFigure= function(value,figure){                 var arr=(valu ...

  5. 测试工程师面试题之:给你印象最深的Bug

    有人看到别人在侵淫面试技巧,什么<程序员面试宝典>,或者<面试测试工程师须知>等等,就会嗤之以鼻.他会觉得这不是“投机取巧”吗,最重要的还是踏实提高自己的能力. 非常同意这种看 ...

  6. 常用的PHP类库,PHP开发者必备【转】

    PHP开发者常用的PHP类库和组件 PDF 生成器 FPDF - 这量一个可以让你生成PDF的纯PHP类库. Excel 相关 你的站点需要生成Excel?没有问题,下面这两个类库可以让你轻松做到这一 ...

  7. 在新建FileInputStream时使用当前相对路径或者绝对路径作为参数的问题

    今天在写一个关于配置Excel导出路径通过properties文件配置的需求,通过查询我得知  properties文件通过 FileInputStream 读取

  8. Python模块:os

    OS模块常用用法: os.name() #判断当前使用的系统环境,windows则返回 ‘nt’,Linux则返回‘posix’ os.getcwd() #显示当前目录 os.listdir() #以 ...

  9. Python:元组

    元组:只读,不能修改,使用小括号 创建元组: tup1 = ('physics', 'chemistry', 1997, 2000) tup2 = (1, 2, 3, 4, 5 ) tup3 = &q ...

  10. initWithFrame 与 initWithCoder 、awakeFromNib 的方法理解笔记

    1. initWithFrame方法是什么? initWithFrame方法用来初始化并返回一个新的视图对象,根据指定的CGRect(尺寸). 当然,其他UI对象,也有initWithFrame方法, ...