Убрать сортировку тест-кейсов по имени и еще пару вопросов :))


(user12) #1

Вопросы никак не связаны с WebDriver :)

 

1)Если запускается тест-сьют в TestNG, то кейсы будут выполняться в алфавитном порядке. Есть решение, использовать такую запись: @Test(dependsOnMethods={"firstTest"}) Но это очень сильно не удобно, т.е. если изменится название метода, т.е. будет не firstTest, а firstTestA - то придется менять название и в аннотации. Как поступают в таких случаях ?

2)Мне не нравится, что при запуске тест-сьюта в TestNG я не вижу,  какой сейчас тест-кейс выполняется. Как сделать, чтобы было также, как в JUnit. Т.е. сразу отображается список всех тесткейсов - если тест-кейс прошел успешно, то он "зеленый", если не успешно, то "красный". Т.е. я сразу вижу всю картину по кейсам

3)Вопрос больше по программированию: Допустим я нахожусь на странице "Пользователи". Заполняю поля "ФиО", "Адрес", "Год рождения", "Предыдущее место работы" и т.п. Нажал кнопку "Сохранить". Я хочу проверить, что данные корректно отображаются. Т.е. я заново открываю карточку пользователя и начинаю начинаю сравнивать, типо: assertEquals("Иванов", getValue("xxxx")); assertEquals("Иван", getValue("yyyyy")); и т.д. Мне не нравится такие проверки, т.к. ИМХО все эти поля должны хранится в переменных и если я захочу создать пользователя "Петров Петр Петрович", то мне придется в ДВУХ местах изменять данные. Т.е. сначала findElementById("xxxx").sendKeys("Петров"), а потом в assertEquals, т.е. assertEquals("Петров", getValue("xxxx"));

 


(Alexander Petrovich) #2

Тупо тесткейсы пронумеровать? :)

1_test_somefunc.jar


(user12) #3

Некрасиво, ИМХО не вариант


(s.kaliberda) #4

3. Тестовые данные лучше хранить во внешнем датасорсе. Например в excel . Ну или по крайней мере сделать класс Person и хранить тестовые данные там.


(Alexander Petrovich) #5

By default, TestNG will run your tests in the order they are found in the XML file. If you want the classes and methods listed in this file to be run in an unpredictible order, set the preserve-order attribute to false

Взято из http://testng.org/doc/documentation-main.html


(Mykhailo Poliarush) #6

1. сортировку нельзя никак задать

2. ну это как реализованно, так реализовано, ничего с этим не поделаешь. Я думаю, вариант дописать свой код в ТестНЖ тебе не устроит :)

3. можно хранить во внешнем файле, а можно сохнанить данные в объект, а потом написать метод, который вытаскивает данные из страницы и создает объект того же типа

ну и дальше делать сравнение объектов

Data data1 = new Data("user", "name");
Data data2 = getDataFromPage();
assertTrue(data1.equals(data2));

Только в классе Data, надо будет перегрузить метод equals

http://www.javapractices.com/topic/TopicAction.do?Id=17


(Sergey Korol) #7

Расскажу, как это сделано у нас.

1) Как уже заметил furious_duck, TestNG задает ровно ту последовательность, что указана в XML. Если вы не используете Grid и Factories, то проблем вообще не должно быть никаких. Создайте XML таким образом, чтобы ваши кейсы шли в нужном вам порядке. Я для удобства написал консольное приложение, которое парсит исходники с тестами и автоматом формирует нужный нам XML с необходимой последовательностью на выходе.

2) Можно создать слушателя, имлементируя интерфейс ITestListener, и перегрузить все нужные методы по типу onTestStart / onTestFailure / onTestSuccess, выводя в лог всю необходимую информацию.

3) Как уже заметил polusok, можно создать класс, к примеру, DataProvider, методы которого будут предоставлять нам необходимые для тестов данные. И даже не обязательно перегружать equals. Все зависит от способа хранения данных. Это могут быть списки, или Holder's. А могут быть геттеры для классов: например, создаем энтити - юзер - , внутри метод - getFullName, возвращающий конкатенированные имя и фамилию. Далее считываем данные со страницы в StringHolder, и сравниваем ассертом 2 строки.