Странное поведение, когда я вызываю файл функции для проверки очистки с помощью хука afterFeature. Файл функции очистки вызывается правильно, потому что я вижу печать из фонового раздела файла, но по какой-то причине выполнение зависает для схемы сценария.
Я попытался запустить функцию с бегуном Junit5, а также в IntelliJ IDE, щелкнув правой кнопкой мыши файл функции, но получаю ту же проблему, выполнение зависает.
Это мой основной файл функций:
Feature: To test afterFeature hook
Background:
* def num1 = 100
* def num2 = 200
* def num3 = 300
* def dataForAfterFeature =
"""
[
{"id":'#(num1)'},
{"id":'#(num2)'},
{"id":'#(num3)'}
]
"""
* configure afterFeature = function(){ karate.call('after.feature'); }
Scenario: Test 1
* print 'Hello World 1'
Scenario: Test 2
* print 'Hello World 2'
Файл afterFeature:
@ignore
Feature: Called after calling feature run is completed
Background:
* def dynamicData = dataForAfterFeature
* print 'dynamicData: ' + dynamicData
Scenario Outline: Print dynamic data
* print 'From after feature for id: ' + <id>
Examples:
| dynamicData |
Выполнение останавливается на схеме сценария. Я вижу напечатанное значение dynamicDataпеременной в консоли, но после этого ничего не происходит.
Кажется, что контурный цикл не запускается или произошел сбой? Не удалось получить подробности из журнала, так как тест не завершен или об ошибке не сообщается. Что еще можно проверить или в чем может быть проблема?
Если это сложно воспроизвести, какой обходной путь очистки теста вы порекомендуете?
Решение проблемы
На данный момент я применил следующий обходной путь: я добавил тестовый сценарий очистки в конце функции с тестами. Параллельное выполнение этих тестов было остановлено, и, честно говоря, я не возражаю против того, чтобы эти тесты не выполнялись параллельно, поскольку в любом случае они выполняются быстро.
Идентификаторы для удаления:
* def idsToDelete =
"""
[
101,
102,
103
]
"""
Тестовый сценарий очистки:
# Test data clean-up scenario
Scenario: Delete test data
# Js method to call delete data feature.
* def deleteTestDataFun =
"""
function(x) {
var temp = [x];
// Call to feature. Pass argument as json object.
karate.call('delete-test-data.feature', { id: temp });
}
"""
* karate.forEach(idsToDelete, deleteTestDataFun)
Вызывает сценарий удаления тестовых данных и передает ему список идентификаторов, которые необходимо удалить.
Удалить функцию тестовых данных:
Feature: To delete test data
Background:
* def idVal = id
Scenario: Delete
Given path 'tests', 'delete', idVal
Then method delete
Комментариев нет:
Отправить комментарий