You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 06:51:17