как можно организовать хранение тестовых данных? selenium+java+junit. Допустим, я создаю учетную запись. Мне нужно запомнить ФИО учетки. А затем в других тест-кейсах на основе запомненного ФИО обращаться к этой учетке.
Отправлено 15 февраля 2018 - 11:06
как можно организовать хранение тестовых данных? selenium+java+junit. Допустим, я создаю учетную запись. Мне нужно запомнить ФИО учетки. А затем в других тест-кейсах на основе запомненного ФИО обращаться к этой учетке.
Отправлено 15 февраля 2018 - 11:10
концепция junit - это что все тесты не зависят друг от друга, никакой информации друг другу не передают. Чтобы обойти это - надо придумывать костыли
в TestNG элементарно хранить в ITestContext
Отправлено 15 февраля 2018 - 11:27
Почему, как только добавляются "Selenium+JUnit" или "Selenium+TestNG" все тут же забывают, про сам ЯП, на котором все это пишется?
С точки зрения Java Ваши "тесты" - обычные методы со всеми вытекающими отсюда последствиями / возможностями / ограничениями и пр.
Можно к примеру, сделать статическую переменную public sttaic UserAccount userAccount. В одном тесте Вы её создаете и заполняете, в другом её же используете (главное не забывать про порядок запуска тестов при запуске (чтобы у Вас использование не вызывалось раньше создания / заполнения).
Указывать порядок вручную - не комильфо.
Опять таки, как вариант - тест создания учётки у Вас идёт отдельно, если Вы само создание тестируете.
А в остальных тестах - смотрите, заполнен ли уже userAccount, если нет - вызываете тест (метод), который эту учетку создаст вам.
Что-то вроде:
public static UserAccount userAccount = null; @Test public void createAccount() { userAccount = new UserAccount(<нужные Вам параметры, которые в конструкторе указали>) ... // сам "тест", которую создаст учётку с нужными данными } private void prepareAccount() { if (userAccount == null) { createAccount(); } } @Test private void checkSmthWithUserAccount1() { prepareAccount(); doSmthWithAccount1(); // сам "тест", данные аккаунта берутся из статической переменной userAccount } @Test private void checkSmthWithUserAccount2() { prepareAccount(); doSmthWithAccount2(); // сам "тест", данные аккаунта берутся из статической переменной userAccount }
Отправлено 15 февраля 2018 - 11:44
Почему, как только добавляются "Selenium+JUnit" или "Selenium+TestNG" все тут же забывают, про сам ЯП, на котором все это пишется?
С точки зрения Java Ваши "тесты" - обычные методы со всеми вытекающими отсюда последствиями / возможностями / ограничениями и пр.
Можно к примеру, сделать статическую переменную public sttaic UserAccount userAccount. В одном тесте Вы её создаете и заполняете, в другом её же используете (главное не забывать про порядок запуска тестов при запуске (чтобы у Вас использование не вызывалось раньше создания / заполнения).
Указывать порядок вручную - не комильфо.
Опять таки, как вариант - тест создания учётки у Вас идёт отдельно, если Вы само создание тестируете.
А в остальных тестах - смотрите, заполнен ли уже userAccount, если нет - вызываете тест (метод), который эту учетку создаст вам.
Что-то вроде:
public static UserAccount userAccount = null; @Test public void createAccount() { userAccount = new UserAccount(<нужные Вам параметры, которые в конструкторе указали>) ... // сам "тест", которую создаст учётку с нужными данными } private void prepareAccount() { if (userAccount == null) { createAccount(); } } @Test private void checkSmthWithUserAccount1() { prepareAccount(); doSmthWithAccount1(); // сам "тест", данные аккаунта берутся из статической переменной userAccount } @Test private void checkSmthWithUserAccount2() { prepareAccount(); doSmthWithAccount2(); // сам "тест", данные аккаунта берутся из статической переменной userAccount }Благодарю за такой развернутый ответ:)
Отправлено 15 февраля 2018 - 11:44
концепция junit - это что все тесты не зависят друг от друга, никакой информации друг другу не передают. Чтобы обойти это - надо придумывать костыли
в TestNG элементарно хранить в ITestContext
Спасибо, не знал об этом.
Отправлено 15 февраля 2018 - 15:28
Стоит, наверно, напомнить про "правила хорошего тона" при написании тестов. А именно о том правиле, которое рекомендует удалять после себя созданные данные. Иначе, при следующем запуске теста на создание юзера он у вас просто упадет, если поля нового объекта не заполняются рандомно. Т.к. такой аккаунт уже был создан ранее. Поэтому, я бы рекомендовал еще добавить метод @AfterClass, который в самом конце удалял бы созданного в самом начале юзера. Ну или при каждом создании генерить юзера с рандомными данными и забивать этими юзерами базу. А потом ее периодически чистить или менять на более чистую.
Отправлено 16 февраля 2018 - 00:54
попробуйте мой проект
https://github.com/s...-dataproviders
- хранить данные для методов в Excel / Open Office / JSON
- естественно есть похожие проекты свой я просто лучше знаю...
```
@Test
@ExcelParameters(filepath = "classpath:data_2007.xlsx", sheetName = "", type = "Excel 2007")
public void loadParamsFromEmbeddedExcel2007(double rowNum, String keyword, double count) {
...
```
почитайте README.md ну и проект сам себя тестирует на трависе - не помню точно сейчас с реальным селениумом или нет - пишите если есть вопросы
Отправлено 16 февраля 2018 - 06:10
Стоит, наверно, напомнить про "правила хорошего тона" при написании тестов. А именно о том правиле, которое рекомендует удалять после себя созданные данные. Иначе, при следующем запуске теста на создание юзера он у вас просто упадет, если поля нового объекта не заполняются рандомно. Т.к. такой аккаунт уже был создан ранее. Поэтому, я бы рекомендовал еще добавить метод @AfterClass, который в самом конце удалял бы созданного в самом начале юзера. Ну или при каждом создании генерить юзера с рандомными данными и забивать этими юзерами базу. А потом ее периодически чистить или менять на более чистую.
Удаление учетки я сделал.
Отправлено 16 февраля 2018 - 06:23
попробуйте мой проект
https://github.com/s...-dataproviders- хранить данные для методов в Excel / Open Office / JSON
- естественно есть похожие проекты свой я просто лучше знаю...
```
@Test
@ExcelParameters(filepath = "classpath:data_2007.xlsx", sheetName = "", type = "Excel 2007")
public void loadParamsFromEmbeddedExcel2007(double rowNum, String keyword, double count) {
...
```
почитайте README.md ну и проект сам себя тестирует на трависе - не помню точно сейчас с реальным селениумом или нет - пишите если есть вопросы
Ссылка битая. Не получилось найти репозиторий.
Отправлено 16 февраля 2018 - 07:17
попробуйте мой проект
https://github.com/s...-dataproviders- хранить данные для методов в Excel / Open Office / JSON
- естественно есть похожие проекты свой я просто лучше знаю...
```
@Test
@ExcelParameters(filepath = "classpath:data_2007.xlsx", sheetName = "", type = "Excel 2007")
public void loadParamsFromEmbeddedExcel2007(double rowNum, String keyword, double count) {
...
```
почитайте README.md ну и проект сам себя тестирует на трависе - не помню точно сейчас с реальным селениумом или нет - пишите если есть вопросы
Ссылка битая. Не получилось найти репозиторий.
Пробел убери в конце
https://github.com/s...t-dataproviders
Отправлено 16 февраля 2018 - 13:33
To use the snapshot version, add the following to pom.xml:
0 пользователей, 0 гостей, 0 анонимных