Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在rest-assured中将Json模式与从API获得的响应相匹配_Json_Rest_Automation_Rest Assured_Rest Assured Jsonpath - Fatal编程技术网

在rest-assured中将Json模式与从API获得的响应相匹配

在rest-assured中将Json模式与从API获得的响应相匹配,json,rest,automation,rest-assured,rest-assured-jsonpath,Json,Rest,Automation,Rest Assured,Rest Assured Jsonpath,我有一个post API,我希望使用JsonSchemaValidator的方法,因为我希望验证整个响应,而不是通过执行断言来选择响应 我试着用 匹配JSONSCHEMAINCLASSPATH(“我的文件名”)和 matchesJsonSchema(我的文件对象) 我的reposne即将实现,方法正在通过,但没有检查或验证我的模式文件 public void directLoginWihSchemaValiadtor(){ File file = new File("C:/Users/a

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

我试着用

  • 匹配JSONSCHEMAINCLASSPATH(“我的文件名”)和
  • matchesJsonSchema(我的文件对象)
  • 我的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的内容,还是从何处获取,我都没有做到这一点


    我是新手,如果您觉得这个问题太简单而无法提问,请耐心等待。对于这种情况,我通常会做以下几点:

  • 使用模式生成器并为json主体创建模式(我使用这个工具)

  • 将生成的json模式放入类路径(例如测试/资源)

  • 将此代码用作REST Assured测试的一部分:

    .body(匹配JSONSCHEMAINCLASSPATH(“您的_schema_name.json”))

  • 如果要确保模式验证正常工作,可以编辑模式文件并将任何必填字段的类型更改为其他类型,然后查看测试是否会失败


    您可以参考我的一些代码示例。

    尝试指定在创建
    JsonSchemaFactory
    时要使用的架构草稿
    DRAFTV4
    是我使用的。我使用过它,但它不起作用,我认为它只用于检查json响应是否为DRAFTV4版本。是否可以发布正在验证的模式?这是我使用JsonSchemaFactory JsonSchemaFactory JsonSchemaFactory=JsonSchemaFactory.newBuilder()创建的代码。setValidationConfiguration(ValidationConfiguration.newBuilder().setDefaultVersion(SchemaVersion.DRAFTV4.freeze()).freeze();给定().contentType(contentType.JSON).body(jsonasmap).when().post(“https://***d.execute-api.us-***-.amazonaws.com/some-api”).then().assertThat().body(JsonSchemaValidator.matchesJsonSchema(file).using(jsonSchemaFactory)).log().all();如果你有任何改进的建议,这样结果就可以实现,请告诉我问题是,无论我在模式中输入的内容是正确的还是不正确的,这都无关紧要,它将显示通过。遗憾的是,过去几周我一直在手写。我没想过要检查工具来为你做一个模式。我发现了这一个:确实有很多工具,我叠加到了我提到的一个,因为它很容易安装,不需要配置,而且工作做得很好,在很多测试中已经使用了一年左右了谢谢你@BigGinDaHouse我自己在写模式它的顺序不正确所以这可能是我没有得到任何验证的原因谢谢