【问题标题】:Karate multipart field; possible to pass in function?空手道多部分领域;可以传入函数吗?
【发布时间】:2019-02-27 16:47:20
【问题描述】:

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

到目前为止我所拥有的场景:

* 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

我是否可以在这样的发布请求中调用函数,或者以其他方式调用?

【问题讨论】:

    标签: automated-tests karate


    【解决方案1】:

    使用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" }
    

    注意:UUID.randomUUID() 为您提供了一种更方便的随机生成方式 文件名,如果这不起作用,您可以使用您的自定义 js 函数本身

    【讨论】:

    • 用我的自定义函数让它工作!根据您的建议,我必须做出的唯一更改是首先使用'#(getFilename)' 将其括在引号中。有趣的是,当我尝试将其作为单个多部分字段执行时,它不起作用
    • 对于单个字段值,您可以简单地将其称为 js 函数,And multipart field filename = getFilename()
    • 哦。在更多地看到/玩弄它之后,这现在是有道理的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-08-05
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多