使用Karate上传生成的CSV文件时类型转换错误排查
问题解决:Karate上传CSV文件时的类型转换错误
错误原因
karate.write()方法返回的是java.io.File对象,但你在multipart file的read属性中传入的是这个File对象,而Karate要求read字段的值必须是文件路径的字符串,因此触发了File转String的类型转换异常。
解决方案
方案1:获取文件路径字符串再传入
直接调用File对象的getPath()方法获取正确的文件路径字符串,再用于multipart配置:
* def csvFile = karate.write(csvContent, fileName) * def filePath = csvFile.getPath() And multipart file files = { read: '#(filePath)', filename: 'bulkUpload.csv', contentType: 'text/csv'} When method POST Then status 200
注意:contentType建议设置为
text/csv(CSV文件的标准MIME类型),而非multipart/form-data,后者是整个请求的类型,不是单个文件的类型。
方案2:直接上传内容(无需生成物理文件)
如果不需要将CSV内容保存到本地文件,可直接传入内容到multipart,跳过文件生成步骤,更高效:
And multipart file files = { content: '#(csvContent)', filename: 'bulkUpload.csv', contentType: 'text/csv'} When method POST Then status 200
额外说明
你之前尝试绝对路径无效,大概率是路径格式问题(比如Windows系统下反斜杠未转义、路径包含特殊字符等),而通过csvFile.getPath()获取的路径是系统自动处理后的正确格式,能避免这类问题。
内容的提问来源于stack exchange,提问作者Pavel Kozhukhar
相关产品推荐
相关产品推荐

