how do you implement ddt in api code example

Example 1: how to implement ddt in api

If you use JUnit-5 in your framework, it allows to use 
@ParameterizedTest annotation beside @Test annotation. 
There are three different way to achieve DDT with @ParameterizedTest 
annotation. 

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));
    }

Example 2: how to implement ddt 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));
    }

Tags:

Java Example