我最近对学习一些负载测试工具产生了兴趣,而 Gatling 似乎是一个非常好的选择。与其他工具相关的唯一缺点是缺少用于上传具有动态值的文件的文档/示例。
例如,要上传静态 CSV 文件,我可以使用:
val scn: ScenarioBuilder = scenario("My First Test")
.exec(http("Upload CSV")
.post("/csv-upload")
.formUpload("file", "file.csv")
.check(status.is(202))
)
但是,如果我想添加一个馈线以向该 CSV 添加值,我希望有类似的东西:
val scn: ScenarioBuilder = scenario("My First Test")
.feed(customFeeder)
.exec(http("Upload CSV")
.post("/csv-upload")
.formUpload("file", ElFileBody("file.csv"))
.check(status.is(202))
)
我已经尝试了多种方法来上传身体部位,例如,如果我做了这样的事情:
val scn: ScenarioBuilder = scenario("My First Test")
.feed(customFeeder)
.exec(http("Upload CSV")
.post("/csv-upload")
.bodyPart(ElFileBodyPart("file", "file.csv"))
.check(status.is(202))
)
我在服务器端收到错误:
MissingServletRequestPartException: Required request part 'file' is not present
我能够代理 Gatling 所做的请求,生成的 curl 请求是:
curl --location --request POST 'http://localhost:8080/api/v1/resource/csv' \
--header 'accept: application/json' \
--header 'content-length: 310' \
--header 'content-type: multipart/form-data; boundary=UhyANQVVCm0hahnV9JvGEA8tPLU1Kc2Z5Fj' \
--header 'host: localhost:8080' \
--header 'x-tenantid: t1' \
--data-raw '--UhyANQVVCm0hahnV9JvGEA8tPLU1Kc2Z5Fj
Content-Disposition: form-data; name="file"
Content-Type: multipart/form-data; charset=UTF-8
Name,Phone,Address
PersonName,123456,ThatStreet
--UhyANQVVCm0hahnV9JvGEA8tPLU1Kc2Z5Fj--
'
哪个正确构造了请求,但服务器端的错误仍然存在。
有什么方法可以实现吗?