如何使用REST Assured优雅断言HTML标签中隐藏的JSON体?
更优雅的断言方式
你的响应是HTML结构,但<body>标签内包含一段JSON字符串,直接用字符串匹配不仅繁琐,还容易因为字段顺序、空格变化导致断言失效。推荐两种更可靠的方式:
方式一:提取并解析JSON字符串断言
利用RestAssured的body()方法结合JsonPath,先提取<body>内的文本,解析成JSON后直接断言字段值,完全避免字符串硬编码:
.body("html.body", bodyContent -> { // 移除body内容末尾多余的冒号(你的响应里JSON后面有个冒号) String cleanJson = bodyContent.asString().trim().replaceAll(":$", ""); // 解析为JSON并断言name字段 assertThat(new JsonPath(cleanJson).getString("name"), equalTo("test")); })
方式二:简化版JSON解析断言
如果不想写匿名内部类,也可以用更简洁的链式写法,先提取HTML body文本,再通过JsonPath直接解析断言:
.extract().path("html.body") .asString() .replaceAll(":$", "") .then() .jsonPath().getString("name").equals("test");
为什么比原方式更好
- 避免了大量转义字符的繁琐写法,代码可读性大幅提升
- 基于JSON结构断言,不受字段顺序、空格等格式变化影响,稳定性更强
- 直接针对字段值做断言,逻辑更清晰,维护成本更低
内容的提问来源于stack exchange,提问作者Sunbro _
相关产品推荐
相关产品推荐

