Тестирование каратэ очищается после каждого сценария / функции - PullRequest
1 голос
/ 10 мая 2019

Это практический сценарий, с которым мы сталкиваемся при использовании каратэ для тестирования -

У нас есть графический API, который мы тестируем с использованием каратэ.

Представьте себе, что каждая функция каратэ создает родителя идочерние узлы в графе для проверки определенной бизнес-логики.

Затем представьте, что существует набор из 100 тестов, что означает создание 100 небольших графов (записей базы данных).

Мы хотим очистить все эти 100 небольших графиков, чтобы избежать загрязнения системы устаревшими данными испытаний.

Может ли кто-нибудь предложить здесь стратегию очистки?AfterFeature, который должен помочь в очистке, бесполезен, потому что нет никакого совместного использования состояния / переменных между любыми двумя функциями, т.е. мы никогда не узнаем идентификаторы родителей / детей, которые были созданы в предыдущей функции

Назначение значений дляглобальная переменная (определенная в разделе «Фон») в каждом сценарии также сбрасывается и не может поддерживать очищаемые идентификаторы.

Ответы [ 3 ]

1 голос
/ 10 мая 2019

Лично я рекомендую стратегию удаления перед запуском.

Но я предлагаю использовать синглтон Java, который можно аккуратно инициировать с помощью karate-config.js:

config.SuiteUtils = Java.type('com.myco.SuiteUtils')

В каждом сценариивы можете вызывать методы для него.

* eval SuiteUtils.addId('someId')

А затем вы можете получить его в JUnit Runner (так как это одноэлементный) и делать все, что вы хотите.

1 голос
/ 10 мая 2019

Вы можете вызвать afterFeature в каждой функции, чтобы удалить соответствующий график. Я действительно не понимаю, что вам мешает?

Или вы можете выполнить очистку, вызвав некоторый код на Java после завершения тестов, чтобы удалить все графики. Если вы создадите переменную в karate-config.js, я думаю, вы могли бы добавить идентификатор каждого создаваемого вами узла в эту переменную, чтобы узнать, какие из них нужно удалить после того, как все тесты пройдены.

0 голосов
/ 28 мая 2019

Столкнувшись с той же проблемой. Есть ли способ передать параметр в AfterScenario?

Потому что в последующем сценарии любой ID, который мы установили в переменной config или фоновой переменной, сбрасывается.

Если я уберу все графики в afterScenario или afterFeature, то не смогу выполнить распараллеливание.

Кроме того, в приведенном выше примере это утверждение, записанное в karate-config.js, выдает ошибку. "config.SuiteUtils = Java.type ('com.myco.SuiteUtils')"

...