Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Karate 读取多个文件的复杂数据驱动测试_Karate - Fatal编程技术网

Karate 读取多个文件的复杂数据驱动测试

Karate 读取多个文件的复杂数据驱动测试,karate,Karate,我举了一个例子,我无法解决空手道的问题。我有25个心电图文件,我应该上传给病人。有一个索引文件包含这些文件的正确顺序。但在通过API上传之前,我需要读取该索引文件,找到下一个要上传的文件 此外,我需要用特定的命名约定重命名这些文件,因为我通过api上传的每个文件都应该是唯一的。该名称由患者电子邮件、时间戳和索引组成。此外,名称中的时间戳应为每个文件增加25500ms。上传后,我应该删除这些文件 我试着写一个java互操作等等,但后来变得非常复杂。这实际上是非常简单的空手道。首先,我假设您有一个i

我举了一个例子,我无法解决空手道的问题。我有25个心电图文件,我应该上传给病人。有一个索引文件包含这些文件的正确顺序。但在通过API上传之前,我需要读取该索引文件,找到下一个要上传的文件

此外,我需要用特定的命名约定重命名这些文件,因为我通过api上传的每个文件都应该是唯一的。该名称由患者电子邮件、时间戳和索引组成。此外,名称中的时间戳应为每个文件增加25500ms。上传后,我应该删除这些文件


我试着写一个java互操作等等,但后来变得非常复杂。

这实际上是非常简单的空手道。首先,我假设您有一个
index.json
,其中包含以下内容:

[
  { "file": "ecg-01.json" },
  { "file": "ecg-02.json" }
]  
ecg-01.json的内容:

{ "email": "john@ecg.com" }
{ "email": "smith@ecg.com" }  
和ecg-02.json的内容:

{ "email": "john@ecg.com" }
{ "email": "smith@ecg.com" }  
请注意,在空手道中,您不需要保存临时文件以进行文件上载,您可以获取现有文件并使用其他名称执行上载,请参阅:

我们将在
upload.feature中完成主要工作,这里我们只使用
https://httpbin.org/
作为演示端点:

Scenario:
* def patient = read(file)
* def timeStamp = startTime + __loop * 25500
* def name = patient.email + '_' + timeStamp + '_' + __loop

* url 'https://httpbin.org/anything'
* request { name: '#(name)' }
* method post
最后,您需要做的就是从您的主要功能中循环一次,其简单程度如下:

* def startTime = java.lang.System.currentTimeMillis()
* def data = read('index.json')
* call read('upload.feature') data
当我运行此示例时,它发出了如下两个POST请求:

1 > POST https://httpbin.org/anything
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 39
1 > Content-Type: application/json; charset=UTF-8
1 > Host: httpbin.org
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/1.8.0_231)
{"name":"john@ecg.com_1582424404163_0"}

1 > POST https://httpbin.org/anything
1 > Accept-Encoding: gzip,deflate
1 > Connection: Keep-Alive
1 > Content-Length: 40
1 > Content-Type: application/json; charset=UTF-8
1 > Host: httpbin.org
1 > User-Agent: Apache-HttpClient/4.5.11 (Java/1.8.0_231)
{"name":"smith@ecg.com_1582424429663_1"}
也就是说,假设您希望将文件创建逻辑编写为纯Java。你可以在一行中把它传给空手道,然后在另一行中删除它。不,空手道中的Java互操作并不“那么复杂”