Структура и организация тестов (Аннотация @Test)

А вы распечатайте его на бумаге, подойдите к любому мануальщику - пусть он его “прочитает”. Если сумеет понять что в нем происходит - значит тест “выглядит нормально” :wink:
Лично я тоже ничего не понял.

2 лайка

Пока что как таковых тестов нет. Это просто пока проверки работоспособности framework.

  • Конкретный тест, проверяет изменение полей на форме караок, при
    сохранении.
  • Насчет DataProvider, не пробовал пока что мало опыта, попробую.
    (Имеется ввиду @DataProvader?). Под data harcoder имеется ввиду прописывание данных внутри кода?
  • Рандомные значения использовал согласно комментарию в посте
    выше:

В класс MovieData я бы добавил статический метод getDefault(), который
бы заполнял поля формы правильными рандомными данными (или как вариант
строка + текущая дата). Таким образом, тест мог бы выглядеть так
(псевдокод):

  • PageManager подсмотрел у Баранцева. Этот класс содержит настройки
    драйвера и ссылки на “помощников”, которые определяют логику тестов.
    В своем варианте, я создал нескольких помощников, которые выполняют
    общие действия для всех страниц.

  • Статические импорты - где их именно нужно добавить? (Form и Menu это enum)

  • FormHelper содержит метод для проверки всех полей в соответствии со
    значениями в SQL таблице.

P.S. если честно я уже запутался, 3 раз переделываю Framework и вижу, что постоянно не правильно. Мне кажется за целый год я вообще ничему не научился и ничего не понимаю в программировании.

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

Да и да.

Ключевое слово выделено. А теперь взгляните на это:

С каких пор name, состоящие из рандомных цифр, считаются валидными данными? Да, технически то вы можете ввести туда все, что угодно, но вы ведь QA. Разве при ручном тестировании вы бы вводили такие же значения?

Мне кажется, что вы пытаетесь совместить техническую составляющую с доменной. Драйвер вообще никак не должен быть связан с вашими пейджами. Общие действия как правило “вшиваются” в 1 BasePage класс, у которого есть доступ к драйверу. Все наследники не должны иметь ничего общего с драйвером. Это разные уровни абстракции.

Вообще, в идеале, раз уж вы оперируете термином PageObject, то структура теста не должна содержать ничего подобного:

app.getFormHelper().fillForm(defaultValuesAudioPID, Form.AUDIOPID);
pageManager.audioPID.saveAudioPID();
pageManager.assetsOTT.saveAssetsOTT();
pageManager.karaoke.saveAndClose();

Какие-то менеджеры с публичными ссылками… Все, что действительно важно для теста, это:

.fillForm(defaultValuesAudioPID, Form.AUDIOPID);
.saveAudioPID();
.saveAssetsOTT();
.saveAndClose();

Остальное - шум.

Т.е. вы ассерты засунули в пейджи?