Это на самом деле довольно просто, используя каратэ. Сначала я предполагаю, что у вас есть index.json
со следующим:
[
{ "file": "ecg-01.json" },
{ "file": "ecg-02.json" }
]
Содержимое ecg-01.json
:
{ "email": "john@ecg.com" }
И содержимое ecg-02.json
:
{ "email": "smith@ecg.com" }
Обратите внимание, что в каратэ вам не нужно сохранять временные файлы для загрузки файла, вы можете взять существующий файл и выполнить загрузку с другим именем, см .: https://github.com/intuit/karate#multipart -file
Мы выполним основную работу в 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
Итак, наконец, все, что вам нужно сделать, это al oop из вашей основной функции, которая может быть такой простой, как это:
* def startTime = java.lang.System.currentTimeMillis()
* def data = read('index.json')
* call read('upload.feature') data
Когда я запустил этот пример, он сделал 2 запроса 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"}
Тем не менее, предположим, что вы хотел написать лог создания файла c как чистый Java. Вы могли бы затем передать его каратэ в одной строке и удалить его в другой строке. Нет, Java взаимодействие в каратэ не "так сложно".