在空手道中使用cURL实现API自动化

lzfw57am  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(121)

我是空手道新手
我自动化API测试,我需要上传一个大文件〉50MB当我这样做与空手道我得到一个错误“破碎的管道”,根据这个问题Broken pipe (Write failed) when testing > max allowed Content-Length我可以使用“cURL”为这个请求。
如下所示(使用硬编码数据),它工作正常:

* def result = karate.exec('curl -L -X POST "URL" -H "Authorization: Bearer MYTOKEN" -F "file=@"PATH""')

但是,在传递变量时,我遇到了语法问题,我需要将URL、令牌和路径作为变量传递,而不是硬编码文本,因为我将在多个场景中重用此测试。
我该怎么做?谢谢,

anauzrmj

anauzrmj1#

把空手道的语法想象成非常接近JavaScript。因此,字符串连接是有效的。例如:

* def myUrl = 'https://httpbin.org/anything'
* def result = karate.exec('curl ' + myUrl)

JavaScript Template Literals的一个优点是:

* def myUrl = 'https://httpbin.org/anything'
* def result = karate.exec(`curl ${myUrl}`)

还要注意,karate.exec() API采用了一个命令行参数数组,这可以使一些事情变得更容易,比如不必在参数周围加上引号,并包含空格等。

* def myUrl = 'https://httpbin.org/anything'
* def result = karate.exec({ args: [ 'curl', myUrl ] })

为了方便起见,您可以将构建arguments数组作为第二步:

* def myUrl = 'https://httpbin.org/anything'
* def args = ['curl']
* args.push(myUrl)
* def result = karate.exec({ args: args })

请注意,条件逻辑甚至if语句在空手道中都是可能的:https://stackoverflow.com/a/50350442/143475
另请参阅:https://stackoverflow.com/a/62911366/143475

相关问题