jmeter随笔(12)--定制json响应结果断言

来源:互联网 发布:希望有鬼知乎 编辑:程序博客网 时间:2024/06/05 08:38

故事背景

之前飞测群里有同学问,对于响应结果是json格式字符串,如何遍历其中所有对象的某个key的value是否和期望结果相同。正好又看到沈大爷(帅哥同事)在写json断言,手一痒,然后也动手写了一下。

响应结果

这里写图片描述

响应结果分析

1、value的类型包含JSONArray,JSONObject和string;
2、遇到JSONArray或者JSONObject,进行递归
3、通过fastjson工具遍历所有的value(完成这一步之后,jmeter针对某个key做断言,相对很容易了)

解决思路代码

public static void getJson(String abc) {        JSONObject jsonObj = JSON.parseObject(abc);        for (Map.Entry<String, Object> entry : jsonObj.entrySet()) {            if ("JSONArray".equals(entry.getValue().getClass().getSimpleName())) {                JSONArray jsonArray = JSON.parseArray(entry.getValue()                        .toString());                for (int i = 0; i < jsonArray.size(); i++) {                    getJson(jsonArray.get(i).toString());                }            } else if ("JSONObject".equals(entry.getValue().getClass()                    .getSimpleName())) {                getJson(entry.getValue().toString());            } else {                System.out.print(entry.getKey().toString() + " : ");                            System.out.println(entry.getValue().toString());            }        }    }

编写代码遇到的问题

Jmeter的BeanShell PostProcessor语法是类java语法,暂时不支持泛型,就是上面代码中涉及到的 Map.Entry

我是这样解决的

1、把写好的java代码,通过eclipse导出一个jar包,放到jmeter的lib\ext目录下
2、重启jmeter
3、编写后置BeanShell PostProcessor,导入打的jar包的包名+类名,引用已经定义的方法

1 0
原创粉丝点击