Python中WireMock未遵循精度要求且返回字符串数值的问题
WireMock随机小数模拟问题解决
问题原因分析
- 精度不生效:WireMock的
randomDecimal助手的precision参数定义的是有效数字位数,不是小数位数,所以你设置precision=2只会保留2位有效数字,而非两位小数。 - 返回字符串类型:因为你把模板变量放在了JSON字符串的引号中,替换后自然会被当作字符串输出。
解决方案
通过formatNumber模板助手配合randomDecimal来控制小数位数,同时移除模板变量的引号,让输出直接成为数值类型:
修改后的响应配置:
"response": { "status": 200, "jsonBody": { "weekly_rate": "{{formatNumber (randomDecimal lower=100 upper=800) '#.00'}}", "max_amount": "{{formatNumber (randomDecimal lower=5000 upper=20000) '#.00'}}" }, "transformers": ["response-template"] }
说明
randomDecimal只需指定lower和upper(无需带.00,整数或小数均可),生成原始随机数字。formatNumber助手用格式字符串#.00强制保留两位小数,确保输出符合精度要求。- 移除模板变量的引号后,WireMock替换后的内容会直接作为JSON数值输出,而非字符串。
预期响应示例
{ "weekly_rate": 345.67, "max_amount": 12345.90 }
内容的提问来源于stack exchange,提问作者user1870400
相关产品推荐
相关产品推荐

