Как создать структурированное автоматическое тестирование с селеном (junit или testng)? Какова ваша лучшая практика для этого? - PullRequest
4 голосов
/ 25 августа 2009

Я написал тесты, которые используют селен для функционального тестирования. Я использую Java. Я хотел бы иметь возможность создавать структуру между тестами. Можно ли это сделать с помощью jUnit или TestNG?

Хотелось бы иметь возможность создать тестовую структуру, которая будет выдавать такой отчет

Top test FAIL
- Module1 test PASS
-- Module1Class1 test PASS
-- Module1Class2 test PASS
--- Module1Class3Method1 test PASS
--- Module1Class3Method2 test PASS
- Module2 test FAIL
-- Module2Class1 test FAIL
--- Module2Class1Method1 test PASS
--- Module2Class1Method2 test FAIL
--- Module2Class1Method3 test PASS

Ответы [ 7 ]

3 голосов
/ 26 августа 2009

Лучший шаблон, который я видел для организации кода для тестов селена, - это шаблон объекта страницы:

http://blog.m.artins.net/acceptance-tests-with-jbehave-selenium-page-objects/

Вот вспомогательная библиотека Java:

http://code.google.com/p/webdriver/wiki/PageFactory

1 голос
/ 07 октября 2009

В TestNG вы можете определить наборы через файл конфигурации (testng.xml), который должен соответствовать вашим потребностям. Вы можете структурировать его так, чтобы иметь тестовую группу для каждого модуля. Отказ в тестовой группе делает весь тест неудачным. Но я думаю, что вы также можете сделать это в JUnit, с которым я не слишком знаком.

Что хорошо в TestNG, так это то, что вы можете определять зависимости. Это обеспечит определенный логический порядок выполнения тестов и пропустит тесты, которые зависят от неудачных тестов, вместо того, чтобы позволить им также проваливаться. Делает анализ намного проще и тесты заканчиваются раньше, потому что все те тесты, которые потенциально обречены на неудачу, будут оставлены в стороне.

Но, как я уже говорил ранее, я думаю, что вы можете сделать это и в JUnit. Это больше вопрос вкуса. И если вы решите иначе, переходить из JUnit в TestNG или наоборот не так уж и сложно.

1 голос
/ 28 августа 2009

Я только что нашел решение для этого вопроса, поэтому я помещаю сюда ссылку, чтобы другие могли извлечь из этого пользу. beust.com Хотя я еще не пробовал.

Обновление: Попробовав, я могу получить такие результаты:

Module1.Class3.Method1 PASS
Module1.Class3.Method2 PASS
Module2.Class1.Method1 PASS
Module2.Class1.Method2 FAIL
Module2.Class1.Method3 PASS

Имя метода сбоя - «Method2», оно находится в классе «Class1» и является пакетом «Module2».

Я использовал все стандартные возможности TestNG (многие из них) + Я переписал TestListenerAdapter, используя методы ITestResult: getName () и getTestClass (). GetName ()

Это не совсем та структура, которую я искал, но небольшой разбор может сказать мне, где произошел сбой. И как плюс, мне не нужно называть методы с именем класса и пакета.

1 голос
/ 25 августа 2009

Я бы порекомендовал посмотреть отчеты XML JUnit или TestNG. Вы должны быть в состоянии преобразовать их с небольшим количеством XSLT, чтобы предоставить новый HTML-отчет в требуемом формате.

1 голос
/ 25 августа 2009

Вы рассматривали возможность использования Selenium Remote Control? http://seleniumhq.org/projects/remote-control/

1 голос
/ 25 августа 2009

Вы не можете, потому что это не тот формат, который Selenium интерпретирует тесты. Selenium поддерживает несколько различных языковых синтаксисов, самыми простыми из которых являются строки таблиц JS и HTML. Вы можете использовать функцию записи Selenium IDE из Firefox, если не хотите писать свои тесты вручную, чтобы соответствовать определенному синтаксису языка.

0 голосов
/ 25 августа 2009

Я не совсем уверен, если я здесь ... но я думаю, что это может помочь вам: http://www.jamesnetherton.com/blog/2007/07/02/Creating-a-Selenium-test-suite/

Вы можете сгруппировать свои тесты очень просто.

...