用空手道下载文件

Download file with Karate

我想从网络位置下载一个 (100MB debian) 文件。我不想与文件交互;我只想把它保存在我的系统上。作为输入,我有 url 和 api 键(作为 header 传递)。以下 curl 命令在我的终端中有效:

curl --insecure -H key:value --output C:\Users\username\filename.deb https://path/filename.deb

所以我像这样尝试了 curl:

  Scenario: Download file
    * karate.exec('curl --insecure -H key:value --output C:\Users\username\filename.deb https://path/filename.deb')

但是没有任何反应。然后我尝试写响应,省略了输出字段,但结果是 190MB 而不是 100MB:

  Scenario: Download file
        * def result = karate.exec('curl --insecure -H key:value https://path/filename.deb')
        * karate.write(result, 'fw.deb')

有没有办法只执行一个命令(我试过 karate.fork 但它也没有做任何事情)而不需要捕获结果并将其写入文件?

如果您无法让 karate.exec()karate.fork() 工作,那么我建议的唯一选择是编写一些 Java 代码来完成这个特定的事情,并且您可以将这个奇怪的步骤纳入您的测试脚本的方式。

karate.exec()的使用方法请参考:

让 Java 进程在文件系统上正确定位可执行文件是很棘手的。您可以尝试使用系统 PATH 之类的设置 env 属性 是否有所作为。或者使用 curl 的完整绝对路径,无论它安装在哪里等