data driven testing in api
If you use JUnit-5 in your framework, it allows to use @ParameterizedTest annotation beside @Test annotation. There are different way to achieve DDT with @ParameterizedTest annotation. (1-valueSource , 2- csvSource , 3-CsvFileSource) 1. @ParameterizedTest @ValueSource(ints = {1,2,3,4}) public void validateRegionNameTest1(int id) { given().pathParam("id", id) .when().get("/regions/{id}") ==> It will use 1,2,3,4 as id in different runs... .prettyPeek() .then().assertThat().statusCode(200) .and().assertThat().body("region_id", equalTo(id)); } 2. @ParameterizedTest @CsvSource({ "1, Europe", "2, Americas", "3, Asia", "4, Middle East and Africa"}) public void validateRegionNameTest2(int id, String name) { ==> iterate each data set one by one given().pathParam("id", id) .when().get("/regions/{id}") .prettyPeek() .then().assertThat().statusCode(200) .and().assertThat().body("region_id", equalTo(id)) .and().assertThat().body("region_name", equalTo(name)); } 3. @ParameterizedTest @CsvFileSource(resources = "/regions.csv") ==> uses external csv file which is located under resources directory public void validateRegionNameTest3(int id, String name) { given().pathParam("id", id) .when().get("/regions/{id}") .prettyPeek() .then().assertThat().statusCode(200) .and().assertThat().body("region_id", equalTo(id)) .and().assertThat().body("region_name", equalTo(name)); }