将Json模式与来自API的响应匹配,确保

时间:2017-07-29 04:48:46

标签: json rest automation rest-assured rest-assured-jsonpath

我有一个post API,我希望使用JsonSchemaValidator的方法,因为我希望通过执行断言验证整个响应而不是选择响应

我尝试过使用

  1. 匹配JsonSchemaInClasspath(“我的文件名”)和
  2. matchesJsonSchema(我的文件对象)
  3. 我的reposne将成为现实,方法正在通过,但我的架构文件没有检查或验证

    public void directLoginWihSchemaValiadtor(){
        File file = new File("C:/Users/abeey/git/SlingAppWebService/Configurations/JsonSchemaValidator_DirectLogin_AWS.json");
        jsonasmap.put("contactNo", "some number");
        jsonasmap.put("loginType","0");
        jsonasmap.put("appid","2");
        jsonasmap.put("co*****ode","IN");
        JsonSchemaFactory jsonSchemaFactory = JsonSchemaFactory.newBuilder().
        setValidationConfiguration(ValidationConfiguration.newBuilder().freeze()).freeze();
    
        given().contentType(ContentType.JSON).body(jsonasmap).when().
        post("https://60i*****.execute-api.us-west-2.amazonaws.com/some-api").
        then().assertThat().
        body(JsonSchemaValidator.matchesJsonSchema(file))).
    
    
        log().all();
        jsonasmap.clear();
    }
    

    //体(JsonSchemaValidator.matchesJsonSchemaInClasspath( “JsonSchemaValidator_DirectLogin_AWS.json”)。使用(jsonSchemaFactory))

    我尝试使用jsonSchemaFactory来做到这一点,但我没有得到关于设置为draftversion的内容或从哪里获取它

    我是新手,如果您发现这个问题过于简单而无法被问及,请耐心等待

1 个答案:

答案 0 :(得分:2)

对于这种情况,我通常会这样做:

  1. 使用架构生成器并为json body创建架构(我使用此工具json-schema-generator

  2. 将生成的json模式放在类路径中(例如test / resources)

  3. 将此代码用作REST Assured test的一部分:

    。体(matchesJsonSchemaInClasspath(" your_schema_name.json&#34))

  4. 如果您想确保架构验证正常,您可以编辑架构文件并将任何必填字段的类型更改为其他字段,并查看您的测试是否会失败。

    您可以参考我的this post查看一些代码示例。