Лучший способ написания тестов TestNG, где один тест зависит от результатов другого - PullRequest
0 голосов
/ 23 декабря 2011

У меня есть TestA , который выполняет вызовы к нескольким веб-сервисам (предоставляемым @DataProvider) и проверяет состояние каждого из них.

TestB , а затем проверяет дополнительные атрибутывывода, сгенерированного в результате успешных запусков TestA .

Чтобы выполнить эти тесты с использованием TestNG , я попробовал два подхода:

  1. Киспользуйте @Factory для генерации тестовых классов, созданных из выходных данных TestA, но фабрики, по-видимому, создаются до запуска любых тестов, например TestA
  2. Для сохранения выходных данных TestA в выходной коллекции, пусть TestA будет работать с более высоким приоритетом , чем TestB, затем TestB будет использовать DataProvider, который получает свои результаты из выходной коллекции.Это работает и похоже на этот тип подхода , за исключением того, что он использует приоритет вместо DependsOn, который пропустил бы TestB, если любой прогонов TestA не удался.

Вопросы :

В случае 1 выше, возможно ли динамически генерировать и запускать новые классы тестирования (как это делает Factory) на основе результатов теста?

Если нет, то случай 2 выше, рекомендуемый способ TestNG или есть лучший способ сделать это?

Обновление: Iтакже задавали этот вопрос в группе пользователей TestNG , как предложил Седрик

Ответы [ 2 ]

2 голосов
/ 23 декабря 2011

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

ОднакоЕсть много способов достичь желаемого, просто не запуская тесты, которые не должны зависеть от результатов первого теста.

Например, testA может создать пустую коллекцию, чтобы testB получал ноль данныхдля запуска.

Пожалуйста, опубликуйте определенный код, если вам нужна дополнительная помощь (и не стесняйтесь, пишите testng-пользователям, чтобы продолжить обсуждение).

0 голосов
/ 23 декабря 2011

Тесты должны быть независимы друг от друга с помощью своего собственного прибора, чтобы их было легко обслуживать, они были автономными и требовали объяснения. Если ваш сценарий включает два вызова веб-службы (тест потока), где первый Ответ на вызов действует как вход для второго вызова, затем убедитесь, что вы выполняете первый вызов в методе setUp(), чтобы фиксация для второго вызова была явной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...