Wiremock执行自动化测试套件时返回错误响应求助
问题排查与解决方案
核心问题分析
从错误日志可以看到,UI自动化发送的请求体是JSON数组格式:
[{"accountNumber":"1020000001","divisionId":"XXX"}]
你配置的正则匹配规则针对的是带空格的键值对格式:.*"accountNumber": "1020000001".*(冒号后有空格),但实际UI请求的JSON里没有这个空格。直接用字符串正则匹配JSON结构很容易因为格式差异(比如空格、换行、压缩格式)导致匹配失败——这就是Postman/JMeter能正常匹配,但UI自动化不行的核心原因。
具体解决建议
1. 修正正则匹配规则(快速临时修复)
调整正则表达式,允许键值对之间的空格可选,适配不同的JSON格式:
{ "matches": ".*\"accountNumber\"\\s*:\\s*\"1020000001\".*" }
对所有账号的匹配规则做同样修改,\\s*表示匹配0个或多个空白字符(空格、制表符等)。
2. 改用JSON Path匹配(推荐长期方案)
针对JSON格式的请求,Wiremock提供了更可靠的JSON Path匹配方式,完全规避字符串格式差异问题。修改bodyPatterns为:
"bodyPatterns": [ { "or": [ { "matchesJsonPath": "$[*].accountNumber == '1020000001'" }, { "matchesJsonPath": "$[*].accountNumber == '1020000002'" }, { "matchesJsonPath": "$[*].accountNumber == '1020000004'" }, { "matchesJsonPath": "$[*].accountNumber == '1020000005'" }, { "matchesJsonPath": "$[*].accountNumber == '1020000006'" } ] } ]
$[*].accountNumber表示匹配JSON数组中所有元素的accountNumber字段,只要其中一个值匹配就会命中规则。
3. 额外检查项
- 确认UI自动化发送的请求
Content-Type头是否为application/json,如果不是,Wiremock可能不会将请求体解析为JSON,导致JSON Path匹配失效。 - 借助已开启的
--verbose模式,查看完整请求日志,对比Postman和UI请求的差异(比如编码、额外请求头、body格式细节)。
内容的提问来源于stack exchange,提问作者Enock Prince
相关产品推荐
相关产品推荐

