下面的代码对我来说很好用:
@Test (priority=1, dependsOnMethods = {"checkIfAllServicesAreUp"})
public void verifyCreateUser() {
RestAssured.baseURI = "someValidURI";
RestAssured.basePath = "userservice/user/";
RequestSpecification spec = new RequestSpecBuilder().setContentType(ContentType.JSON).log(LogDetail.METHOD).build();
response = RestAssured.given().spec(spec).headers("source","APP").body("{ }").when().post("");
}
但是当我以下面的方式移动RequestSpecification
下的@BeforeClass
相关代码时:
private RequestSpecification spec;
@BeforeClass
public void setSpec() {
spec = new RequestSpecBuilder().setContentType(ContentType.JSON).log(LogDetail.METHOD).build();
}
@Test (priority=1, dependsOnMethods = {"checkIfAllServicesAreUp"})
public void verifyCreateUser() {
RestAssured.baseURI = "someValidURI";
RestAssured.basePath = "userservice/user/";
response = RestAssured.given().spec(spec).headers("source","APP").body("{ }").when().post("");
}
我的API测试返回错误代码405(不允许使用方法)。
似乎spec
覆盖了我的测试方法RestAssured.basePath
中的verifyCreateUser
分配,因为我没有明确地在spec
中设置相同的内容,以及POST调用被someValidURI
而不是someValidURI+/userservice/user
命中,因此405错误代码。我不想在basePath
中设置spec
,因为我的每个测试方法都会有所不同。请帮助找到一个优雅的解决方案。
答案 0 :(得分:2)
修改了我的代码,如下所述,它现在正常工作:
@Test (priority=1, dependsOnMethods = {"checkIfAllServicesAreUp"})
public void verifyCreateUser() {
RestAssured.baseURI = "someValidURI";
RequestSpecification spec = new RequestSpecBuilder().setBasePath("userservice/user/").setContentType(ContentType.JSON).log(LogDetail.METHOD).build();
response = RestAssured.given().spec(spec).headers("source","APP").body("{ }").when().post("");
}
显然,我之前为每个测试配置basePath
的方式不正确。我现在在spec
内完成。
希望这有助于将来。