then().extract().body().jsonPath().getString("")作用及Groovy Json报错排查
Cucumber测试validateError方法解析与报错问题
方法功能说明
这个validateError方法是Cucumber接口测试里用来验证错误响应的工具方法:
- 参数
name(当前传入值为Bob):代码里完全没用到这个参数,不会从它提取任何内容 - 参数
errorTable:从Cucumber场景的表格数据中读取预期错误信息,转成Map<String, String>后,用来获取预设的errorCode(错误状态码)和errorMessage(错误消息) - 核心逻辑:
- 尝试用JsonPath提取整个接口响应体(
getString("")表示把整个JSON结构转为字符串) - 校验接口响应的状态码是否符合预期
- 校验响应内容中包含预设的错误消息
- 尝试用JsonPath提取整个接口响应体(
报错原因分析
抛出的错误:
原因:groovy.json.JsonException:第1行第1列词法分析失败,读取'B'时无法识别有效的JSON值或标点符号。
这说明接口返回的不是合法JSON格式内容,而是以字符'B'开头的纯文本(比如直接返回了"Bob"或其他非JSON字符串),导致JsonPath解析器无法识别,抛出语法错误。
疑惑解答
这段代码不会从name参数提取结果,它的目标是从接口响应体中提取JSON内容,但当前接口返回的是非JSON文本,所以才触发了报错。
内容的提问来源于stack exchange,提问作者runnerpaul
相关产品推荐
相关产品推荐

