即使断言失败,TestNG也不会使测试用例失败

时间:2019-04-18 05:22:02

标签: java rest testng rest-assured assertion

@Test
public void getProfile() {
    RestAssured.baseURI = URL.baseURL;
    Response res = given().header(URL.contentType, 
               URL.cookieType).when().get(URL.getURL).then().assertThat().
               statusCode(200).and().extract().response();
    String data = res.asString();
    System.out.println(data);
}

以下是测试运行的输出:

{"status_code":401,"message":"Authentication failed."}

TestNG现在将这种情况标记为PASS,即使响应不符合预期。我如何使它工作?我只想使用assertThat语句。

2 个答案:

答案 0 :(得分:1)

您必须将测试结果保存为布尔值或数字值。

稍后,您必须使用Assert比较预期的测试结果和实际的测试结果:

Boolean testPassed = isTestPassed();
Assert.assertTrue("The test result is: "+testPassed,testPassed);

数值比较:

long testValue = getTestResponseCode();
Assert.assertEquals("Actual test respoonse code is: "+testValue,testValue);

答案 1 :(得分:0)

尝试以下任何一种方法。

given().contentType(ContentType.JSON).queryParam("text","lands").when().get("http://services.groupkt.com/country/search").then().assertThat().statusCode(200).log().all();

            int actualStatusCode=given().contentType(ContentType.JSON).queryParam("page","2").when().get("https://reqres.in/api/users").statusCode();
            Assert.assertEquals(200, actualStatusCode,"The status code mistatches");