如何使此删除测试独立?

时间:2019-08-20 08:15:02

标签: java api testng rest-assured

我要检查DELETE响应。那么我应该让该员工参加此测试,还是应该将其放在其他位置(例如,使用方法之前)?

      @Test(description="positive")
public static void deleteEmployeeEducation()       
    Response res= given().
                      spec(Specifications.getRequestSpecAsEmpl()).              
        body(Payloads.addEmployeeEducation("GGGG","ingieneer",2005,2010)).
                      when().
                      put(Endpoints.createEmployeeEducation()).
                      then().log().all().extract().response();
    JsonPath js= ReusableMethods.rawToJson(res);
    Integer  educationId=js.get("[0].id");

        given().
                spec(Specifications.getRequestSpecAsEmpl()).
                delete(Endpoints.deleteEmployeeEducation()+educationId).
                then().log().all().
                assertThat().statusCode(204);

1 个答案:

答案 0 :(得分:0)

如果您希望删除测试独立,那么可以,首先在此测试中创建用户,然后断言删除是可行的。逻辑上的先决条件是插入测试已经预先成功测试。

但是,我不一定建议您寻求使此删除测试独立。通常,在这种情况下,当您测试由API提供的CRUD操作时,进行具有逻辑顺序的集成测试是有意义的。如果您的API公开了插入,选择,删除,更新操作,则集成测试可以是以下测试顺序,顺序如下:

  • 测试插入适用于用户123

  • 测试选择有效并返回用户123

  • 测试更新有效,并将用户123更新为用户234。可能在此测试中添加选择断言,并断言选择返回用户234

  • 测试删除有效。可能添加一个选择断言,断言没有用户返回。

如果我正确地理解您只是在测试不同的CRUD操作,那将是我对测试类设计的建议。

@Before方法应用于设置测试的先决条件。如果您所有的测试都与同一位员工相关,则在此处创建您的员工是有意义的。否则,我会推荐我的集成测试方法。

让我知道这是否有帮助。