空手道多部分领域;可以传入函数吗?

Karate multipart field; possible to pass in function?

我有一些测试用例,我需要上传文件并可以给它命名。为了节省时间,我想做的是多次上传同一个文件,但每次都随机生成一个名称。

到目前为止我对一个场景的了解:

* def randomFile =
"""
function randString(length,chars) { 
    var result = '';
    for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))];
    return result;
}
"""
* def getFilename = randomFile(6, "abcdefgh")

Given url
And request ''
And multipart fields { "profile": "Smoke Test Uploads", "filename": getFilename, "url": "https://s3.file.foo.bar" }
When method post
Then status 201

当我查看我上传的文件时,它的文件名是 getFilename

我可以像这样在 post 请求中调用一个函数,还是可以通过其他方式调用函数?

使用karate embedded expression

And string getFilename = java.util.UUID.randomUUID()
And multipart fields { "profile": "Smoke Test Uploads", "filename": #(getFilename), "url": "https://s3.file.foo.bar" }

Note: UUID.randomUUID() gives you a more convenient way of generating random filenames, if this didn't work you can use your custom js function itself