• 基于Fitnesse的接口自动化测试-关键字设计-样例-从Json中获取指定值


    需求

    接口测试中,响应内容大部分是Json格式,需要校验其中某些字段值。

    实现

    1.编写构造函数和成员变量

        private String content;
        public StringFixture() {
        }
    
        public StringFixture(String content) {
            this.content = content;
        }
    

    2.实现方法(关键字)

    public String getValueByKeyFromJsonString(String key) {
            String jsonContent = this.content;
            String value = null;
            if (null==jsonContent) {
                value = "json串为空";
            } else {
                try {
                    value = JsonUtil.getValue(jsonContent, key);
                } catch (JsonParseException e) {
                    value = "JsonParseException";
                    logger.debug("JsonParseException:", e);
                } catch (IllegalStateException e) {
                    value = "IllegalStateException";
                    logger.debug("IllegalStateException:", e);
                } catch (ClassCastException e) {
                    value = "ClassCastException";
                    logger.debug("ClassCastException:", e);
                } catch (JSONException e) {
                    value = "json串格式异常";
                    logger.debug("JSONException:", e);
                }catch(NullPointerException e){
                    value = "json串内容为空";
                    logger.debug("NullPointerException:", e);
                }
                logger.debug("jsonContent: {} , key: {} , value: {}", jsonContent, key, value);
            }
    
            return value;
        }
    
    public static String getValue(String jsonContent, String key) {
            String content = null;
            String value = null;
            System.out.println(jsonContent);
            if (jsonContent.contains("\"")) {
                content = jsonContent.replace(""[\"", "["");
                content = content.replace(""\]"", ""]");
                content = content.replace(""{\"", "{"");
                content = content.replace("\"}"", ""}");
                content = content.replace("\"", """);
            } else {
                content = jsonContent;
            }
            JSONObject jsonObject = JSONObject.parseObject(content);
            if (jsonObject.containsKey(key)) {
                value = jsonObject.getString(key);
            } else {
                value = "json串中不包含字段" + key;
            }
            return value;
        }
    

    使用

    1.引入类对应package

    |import         |
    |own.slim.string|
    

    2.编写脚本

    |script |string fixture              |{"status":"123","code":"345"}      |
    |$value=|getValueByKeyFromJsonString;|status  |
    |check  |getValueByKeyFromJsonString;|code|345|
    

    3.测试

    getValueByKeyFromJsonString

    总结

     以上是处理简单Json格式响应消息的方法,这种方法也适用于处理数据库的查询结果。
     如果遇到复杂的Json格式响应(嵌套或包含列表)或者其它格式,可以采用正则表达式来处理。

  • 相关阅读:
    面向对象和面向过程
    视图代理(转帖)
    qt中的多线程(转)
    QT GUI总结
    Qt探秘——谈ui文件的用法
    Qt的Model/View Framework解析
    编程入门指南 v1.4
    设计模式总结(经典)
    地址
    QLayout的属性介绍
  • 原文地址:https://www.cnblogs.com/moonpool/p/13434455.html
Copyright © 2020-2023  润新知