簡體   English   中英

在空手道中使用 cURL 實現 API 自動化

[英]Using cURL for API automation in Karate

我是空手道新手

我正在自動化 API 測試,我需要上傳大於 50MB 的大文件當我使用空手道這樣做時,我收到錯誤“Broken Pipe”,根據這個問題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、令牌和路徑作為變量而不是硬編碼文本傳遞,因為我將在多個環境中重復使用此測試。

我怎么會 go 呢? 謝謝,

認為空手道語法非常接近 JavaScript。 因此,字符串連接有效。 例如:

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

一件好事是 JavaScript 模板文字工作:

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

另請注意, karate.exec() API 采用命令行 arguments 數組。 這可以使一些事情變得更容易,例如不必在 arguments 周圍加上引號,包括空格等。

* 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM