Artillery压测中如何在YAML里通过CSV传递整数类型age字段
解决Artillery中CSV读取age为字符串的问题
你遇到的问题是因为Artillery默认会把CSV里的所有字段解析成字符串类型,而后端要求age是整数。好在Artillery的模板引擎支持直接在配置中使用JavaScript表达式,咱们可以利用这一点把字符串转成整数。
修改后的完整配置
config: target: 'http://localhost:5000' phases: - duration: 60 arrivalRate: 10 defaults: headers: token: 'TOKEN' payload: path: "./hello.csv" fields: - "name" - "age" - "state" - "country" scenarios: - flow: - post: url: "url" # 记得替换成你实际的接口路径 json: name: "{{name}}" age: "{{ parseInt(age, 10) }}" # 关键:用parseInt把字符串转成整数 state: "{{state}}" country: "{{country}}"
关键说明
parseInt(age, 10)会把从CSV读取的字符串类型的age,转换为十进制的整数类型,这样后端就能接收到符合要求的整数参数了。- 如果需要处理浮点数场景,可以用
parseFloat(age)来替代parseInt。 - 建议加上parseInt的第二个参数(基数10),避免出现意外的进制转换问题,保证转换逻辑的稳定性。
这样修改之后,再运行负载测试,age字段就会以整数类型发送给后端,应该就能顺利通过验证了。
内容的提问来源于stack exchange,提问作者yogesh agrawal
相关产品推荐
相关产品推荐

