将 RequestSpecification 代码移到 @BeforeClass 下后出现问题
Issue after moving the RequestSpecification code under @BeforeClass
下面的代码适合我:
@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测试returns错误代码405(方法不允许)。
似乎 spec
正在覆盖我的测试方法 verifyCreateUser
中的 RestAssured.basePath
分配,因为我没有在 spec
中明确设置相同的内容,并且 POST 调用在 someValidURI
而不是 someValidURI+/userservice/user
处被命中,因此出现 405 错误代码。我不想在 spec
中设置 basePath
因为我的每个测试方法都会不同。请在这里帮助找到一个优雅的解决方案。
按如下所述修改了我的代码,现在工作正常:
@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
.
内完成
希望这对以后的人有所帮助。
下面的代码适合我:
@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测试returns错误代码405(方法不允许)。
似乎 spec
正在覆盖我的测试方法 verifyCreateUser
中的 RestAssured.basePath
分配,因为我没有在 spec
中明确设置相同的内容,并且 POST 调用在 someValidURI
而不是 someValidURI+/userservice/user
处被命中,因此出现 405 错误代码。我不想在 spec
中设置 basePath
因为我的每个测试方法都会不同。请在这里帮助找到一个优雅的解决方案。
按如下所述修改了我的代码,现在工作正常:
@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
.
希望这对以后的人有所帮助。