JMeter调用GraphQL接口时传递float类型变量报错如何解决?
报错根因
你当前的写法存在两个问题:
- 变量外层包裹了双引号,GraphQL会直接将该值识别为字符串类型,与接口定义的
Float类型不匹配 - 自定义变量值末尾的
F后缀属于GraphQL的Float类型不支持的无效字符
报错信息对应描述:
Float cannot represent non numeric value: "xxx"
解决方案
按以下步骤修改即可:
- 去掉变量外层的双引号
原写法:latitude:"${latitudeValue}"
修改为:latitude:${latitudeValue} - 清理变量值的多余
F后缀- 如果是手动给自定义变量加的后缀,直接在「用户自定义变量」组件中删除F,保留纯数值即可,比如将
41.98240048026275F改为41.98240048026275 - 如果是从其他接口提取的变量自动携带F,可以用JMeter函数动态移除后缀,最终写法为:
latitude:${__javaScript("${latitudeValue}".replace("F",""),)}
- 如果是手动给自定义变量加的后缀,直接在「用户自定义变量」组件中删除F,保留纯数值即可,比如将
- 可选兜底方案:通过GraphQL变量声明统一管控类型
可以在查询语句开头先明确声明变量类型,再单独通过变量块传值,避免类型识别错误,写法示例:- 查询语句部分:
query ($latitude: Float, $longitude: Float) { # 替换为你实际的查询名和返回字段 getLocation(latitude: $latitude, longitude: $longitude) { id address } }- JMeter请求的Variables区域填写内容:
{ "latitude": ${latitudeValue}, "longitude": ${longitudeValue} }
内容的提问来源于stack exchange,提问作者Uddhav Raut
相关产品推荐
相关产品推荐

