使用Artillery加载测试API时,CSV参数文件调用报错排查
排查Artillery CSV参数源请求失败问题
1. 先查CSV路径与格式
- 路径是否匹配运行目录:
../source/departement.csv是相对脚本的路径,但你运行artillery run时的工作目录如果是项目根目录,路径就不对了——试试换成绝对路径,或者改成source/departement.csv再测。 - CSV格式要规范:如果文件里只有省份编号(每行一个,比如75、76),别加表头;如果加了表头(比如
code),必须在payload配置里指定fields: ["code"]。另外,检查文件有没有空行、行尾空格或者特殊字符——空行会导致参数为空,请求URL缺编号直接失败。 - 别给编号加引号:如果CSV里的编号是
"75"而不是75,会导致URL变成https://geo.api.gouv.fr/departements/"75"?fields=region,API肯定识别不了。
2. 确认参数引用与payload配置
- 脚本里的URL要正确引用CSV参数:无表头的CSV默认用
{{var1}},有表头的用你定义的字段名(比如{{code}}),示例:- get: url: "https://geo.api.gouv.fr/departements/{{var1}}?fields=region" - payload配置别瞎改:之前把
json:换成csv:是错的,Artillery会自动识别文件格式,正确的配置应该是:config: target: "https://geo.api.gouv.fr" payload: path: "../source/departement.csv" fields: ["code"] # 有表头才加,无表头可以删掉这行
3. 排查API限流
- 免费API一般都有限流,枚举法请求量小、并发低,不会触发;但Artillery的虚拟用户可能同时发起请求,直接撞上限流。可以:
- 把
arrivalRate降到1,减少并发再测。 - 用
artillery run --debug <script>打详细日志,看失败请求的状态码是不是429(Too Many Requests)。
- 把
4. 验证CSV里的编号有效性
- 法国有些省份编号是带字母的(比如2A、2B),还有海外省的97开头编号,确认CSV里的所有编号都是API支持的有效编号——如果有无效编号,请求会返回404,直接算失败。
内容的提问来源于stack exchange,提问作者GrowyTobe
相关产品推荐
相关产品推荐

