二、Json Schema Validation—断言ノート
2520 ワード
ディレクトリ:1、アサーション要求結果のフィールド値2、匿名JSONルート検証3、Json Schema Validationアサーションjson構造が仕様を複合するか否か4、rest-assuredを使用しないJson Schema Validation
一、要求結果の断言
次のようなjson列があれば
二、匿名JSONルートノード検証
JSONファイルにルートノード名が不確定な場合は、
検証方法は次のとおりです.
三、json構造が複合規範であるかどうかを断言する
step1:
schemaを生成します.jsonファイルは、classpathに配置されます(ideaならresourcesディレクトリの下に置くことができます).
step2:
pom.xmlファイルの下でmaven依存を追加
step3:
step4:
四、rest-assuredを使用しないJson Schema Validation
rest-assuredに依存せずにjson-schema-validator moduleを使用することもできます.jsonテキストをStringタイプの文字列として表すには、次のようにします.
一、要求結果の断言
次のようなjson列があれば
{
"lotto":{
"lottoId":5,
"winning-numbers":[2,45,34,23,7,5,3],
"winners":[{
"winnerId":23,
"numbers":[2,45,34,23,3,5]
},{
"winnerId":54,
"numbers":[52,3,12,11,18,22]
}]
}
}
lottoId 5, :
get("/lotto").then().body("lotto.lottoId", equalTo(5));
winnerId 23 54:
get("/lotto").then().body("lotto.winners.winnerId", hasItems(23, 54));
: equalTo hasItems Hamcrest matchers , org.hamcrest.Matchers。
二、匿名JSONルートノード検証
JSONファイルにルートノード名が不確定な場合は、
$
またはスペース文字列をパスとして認識することができ、例えばJSONは以下のようになる.[1,2,3]
検証方法は次のとおりです.
when().
get("/json").
then().
body("$", hasItems(1, 2, 3));
三、json構造が複合規範であるかどうかを断言する
step1:
schemaを生成します.jsonファイルは、classpathに配置されます(ideaならresourcesディレクトリの下に置くことができます).
step2:
pom.xmlファイルの下でmaven依存を追加
io.rest-assured
json-schema-validator
3.0.1
step3:
matchesJsonSchemaInClasspath
静的インポートio.restassured.module.jsv.JsonSchemaValidator
このクラスからすべての静的インポートを推奨する方法step4:
// Given
JsonSchemaFactory jsonSchemaFactory = JsonSchemaFactory.newBuilder().setValidationConfiguration(ValidationConfiguration.newBuilder().setDefaultVersion(DRAFTV4).freeze()).freeze();
// When
get("/products").then().assertThat().body(matchesJsonSchemaInClasspath("products-schema.json").using(jsonSchemaFactory));
四、rest-assuredを使用しないJson Schema Validation
rest-assuredに依存せずにjson-schema-validator moduleを使用することもできます.jsonテキストをStringタイプの文字列として表すには、次のようにします.
import org.junit.Test;
import static io.restassured.module.jsv.JsonSchemaValidator.matchesJsonSchemaInClasspath;
import static org.hamcrest.MatcherAssert.assertThat;
public class JsonSchemaValidatorWithoutRestAssuredTest {
@Test
public void validates_schema_in_classpath() {
// Given
String json = ... // Greeting response
// Then
assertThat(json, matchesJsonSchemaInClasspath("greeting-schema.json"));
}
} ```