【问题标题】:Negative assertions or negative matchers in RestAssured API Testing Framework [closed]RestAssured API 测试框架中的否定断言或否定匹配器 [关闭]
【发布时间】:2014-10-21 17:27:26
【问题描述】:

我正在进行 API 测试,我注意到 RestAssuredMatchers 库中没有任何否定匹配器。我的意思是:

例如:

代码:

Response response = expect().body("status",equalTo("success")).given()
.contentType("application/json").with()
.body(request).when().post(server); 

这里我基本上是说这个“请求”正文,期望响应中的状态键等于“成功”。

从这里我可以提取状态代码以确保这是一个成功的响应表单服务器并做出肯定的断言

代码:

    int statusCode = response.getStatusCode(); 
    Assert.assertTrue(statusCode == 200, "status code should have been 200"); 

这就是我的问题所在:

是否有图书馆或某种方式可以让我做出负面断言和/或期望,例如:

代码:

do().not().expect().body("status",equalTo("success")).given()
    .contentType("application/json").with()
    .body(request).when().post(server); 

int statusCode = response.getStatusCode(); 

or RestAssured.assertFalse(statusCode == 404);

等等……

有人可以帮忙吗?

【问题讨论】:

    标签: api rest testing assertion rest-assured


    【解决方案1】:

    所以发现 RestAssured 帖子的参数不是 json 数据格式,而是 json 有效负载转换为字符串。因此,您可以通过转换为字符串然后执行包含...然后将其包裹在断言周围来进行否定断言。这是一个代码示例:

    代码:

    Response responseLiheap = RestAssured.given().contentType("application/json").with()
    .body(requestString).when().post(server);
    
    Assert.assertFalse(responseLiheap.asString().contains("Whatever_it_should_not_contain"));
    

    如果您想自己检查响应,您可以通过捕获服务器发送回的数据来打印响应:

    代码:

    ResponseBody<?> body = responseLiheap.getBody();  
    logger.info("Response:--->" + body.asString()); 
    

    您可以进行 sysout 或像我一样,使用记录器,然后从该数据中读取数据作为自己的健全性检查。

    【讨论】:

      【解决方案2】:

      尝试使用 Hamcrest 库 1.3。这有匹配器列表来测试负面场景。

      【讨论】:

      • 请举例
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      • 1970-01-01
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多