接口自动化测试之旅--JsonSchema

接口自动化测试之旅–JsonSchema

针对接口测试结果校验,现在除了对返回值一一的校验以外,由于一一校验的不完整性,由此增加了JsonSchema的校验方式,可以全局方式校验 JSON结构

在线 JSONSchema 生成地址:http://JSONschema.net/#/home

JAVA工程增加jar包

        <dependency>
            <groupId>com.github.fge</groupId>
            <artifactId>json-schema-validator</artifactId>
            <version>2.2.6</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.3.0</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.3.0</version>
        </dependency>

封装成方法

/**
     * JSON Schema 比对
     * 生成格式文件地址: http://JSONschema.net/#/home
     * @param data 本地源JOSNS数据
     * @param schema JSON Schema
     * @return
     */
    public static Boolean validationJSONSchema(String data,String schema){
        ProcessingReport resultReport = null;

        try{
            //源jsonNode
            JsonNode dataValue = JsonLoader.fromString(data);
            log.info("源JSONSchema:" + dataValue.toString());
            //目标jsonNode
            JsonNode schemaValue = JsonLoader.fromString(schema);
            log.info("目标JSONSchema:" + schemaValue.toString());

//            ProcessingReport resultReport = factory.getValidator().validateUnchecked(sourceJSONNode,targetJSONNode);

            resultReport = factory.byDefault().getValidator().validateUnchecked(schemaValue,dataValue);
            if(resultReport.isSuccess()){
                log.info("JSON Schema匹配 通过");
                return true;
            }
        }catch (Exception e){
            e.printStackTrace();
            log.info("JSON Schema匹配 失败");
        }
        log.info("JSON Schema匹配 失败");

        Iterator<ProcessingMessage> it = resultReport.iterator();
        while (it.hasNext()) {
            log.info(it.next());

        }
        return false;
    }

测试验证:

/**
     * 测试查询章节详情
     */
    @Test
    public void testGetTrainingChapter() throws IOException {
        String chapterId = "189";
        String userId = "10980500000";
        int pageIndex = 1;
        int pageSize = 20;

        JSONObject result = JSONObject.fromObject(sampleApi.getTrainingChapter(chapterId,userId,pageIndex,pageSize));

        String dataValue = fileMethodUtils.readTxtViaResources("JSONSchema/SampleApi/getTrainingChapter/200.txt");
        String schemaValue = result.toString();

        //JSON格式比对
        Assert.assertTrue("JOSN格式比对结果:",validationJSONSchema(dataValue,schemaValue));

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值