Rest Assured接口测试如何校验appStatus为两个指定值时用例通过
解决方案
你使用的是Rest Assured测试框架,其断言能力依赖Hamcrest匹配器,只需要将单值匹配的equalTo替换为多值任选匹配的匹配器即可,共有两种常用实现方案:
方案1:通用兼容版(适配所有Hamcrest版本)
使用anyOf匹配器包裹两个等值匹配规则,只要满足其中一个就判定断言通过:
- 首先导入所需的静态方法:
import static org.hamcrest.CoreMatchers.anyOf; import static org.hamcrest.CoreMatchers.equalTo;
- 修改断言行代码即可,修改后的完整代码如下:
given() .header(headers) .body(json) .when() .post(url) .then() .contentType(ContentType.JSON) .extract().response() .then().assertThat() .statusCode(200) .and() .assertThat().body("appStatus", anyOf(equalTo("APPROVE"), equalTo("COMPLETE"))) .log().all();
方案2:简洁版(适配Hamcrest 2.x及以上版本)
可以直接使用更简化的isOneOf匹配器,不需要重复写equalTo:
- 导入静态方法:
import static org.hamcrest.Matchers.isOneOf;
- 断言行修改为:
.assertThat().body("appStatus", isOneOf("APPROVE", "COMPLETE"))
两种方案效果完全一致,可根据你项目依赖的Hamcrest版本灵活选择。
内容的提问来源于stack exchange,提问作者CatAndPlantGuy
相关产品推荐
相关产品推荐

