RestAssured接口测试断言失败:JSON Path id匹配异常,如何获取单条记录?
问题解决方法
错误原因
你当前请求的是/posts列表接口,返回的是帖子数组,JSON Path id会提取所有帖子的id组成集合,和单个id值167039断言自然不匹配,这就是报错的核心原因。
解决方案
要访问单条id为167039的记录,需要修改请求地址为单条帖子的详情接口,同时调整断言逻辑:
- 修改请求URL:将GET请求地址改为单条帖子的详情路径,格式为
https://gorest.co.in/public/v2/posts/{id},替换后为https://gorest.co.in/public/v2/posts/167039。 - 调整断言:返回的是单个帖子对象,直接断言
id等于目标数值(注意id是数字类型,不要用字符串)。 - 修正Header断言错误:原代码中
header("User-Agent","application/json")是错误的,application/json是响应的Content-Type头,而非User-Agent,可以改为断言Content-Type,或者去掉该断言(如果不需要验证的话)。
修正后的代码
@Test public void getStatus() { given() .when() .get("https://gorest.co.in/public/v2/posts/167039") .then() .statusCode(200) .body("id", equalTo(167039)) .header("Content-Type", "application/json; charset=utf-8"); }
内容的提问来源于stack exchange,提问作者amir
相关产品推荐
相关产品推荐

