Как организовать проверку поля 1? В него могут вводиться два валидных значения и одно нет, например ("", 50) - валидные, 51-невалидное (ограничение в базе 50 символов)
Пока есть только вот такая идея (код теста):
@pytest.mark.parametrize('valid',["",50])
test_valid_field1(self, valid)
def fill_first_field(valid)
def fill_second_field(u'Тестовое значение 2')
def fill_third_field(u'Тестовое значение 3')
какой-то assert
@pytest.mark.parametrize('notvalid',[51])
test_notvalid_field1(self, notvalid)
def fill_first_field(notvalid)
def fill_second_field(u'Тестовое значение 2')
def fill_third_field(u'Тестовое значение 3')
какой-то assert
@pytest.mark.parametrize('valid',["",100])
test_valid_field2(self, valid)
def fill_first_field(u'Тестовое значение 1')
def fill_second_field(valid)
def fill_third_field(u'Тестовое значение 3')
какой-то assert
И так для каждого поля…
Где хранить данные например Тестовое значение 2 и Тестовое значение 3???
Как можно еще организовать такие тесты???
Используется pytest, page_object(в какой-то виде))), selenium
Ну во первых, из вашего описания не понятно какой у вас контракт взаимодействия фронта и бека. И собственно архитектура приложения. Т.к. это влияет на архитектуру тестов.
Вариантов может быть несколько:
1 Фронт отсылает на бек данные как есть и получает ошибки валидации от бека (удобный вариант для автоматизации)
2 Фронт имеет свои валидации и только после проверки отсылает данные на бек.
Если у вас первый вариант, то UI тесты с webdriver’ом вам не нужны для проверки валидаций. Шлёте http запросы на бек с нужными тестовыми данными.
Если второй вариант, то посмотрите как у вас устроен UX, на каком этапе появляется ошибка валидации? Нужно ли вводить все 3 поля, чтобы её увидеть? Если да, то:
Сохраните 3 валидных значения и 3 не валидных в переменную класса.
У вас будет 6 тестов всего.
Проверять надо через GUi. Тесты для апи тоже написаны. Пока просто никак не реализована валидация на GUi. На стороне бэкенда запроса с невалидныии данными не пропусти бд(ну или что что то вокруг нее).
Если например ввести 51 символ в нужное поле и заполнить все остальное, то программа просто выдаст 400 ошибку при сохранении(отправки на сервер невалидного jsona)
Почитайте про Pairwise, чтобы не гонять все варианты ваших полей, на основе какой-нибудь из утилит сгенерируйте наборы для негативных и позитивных случаев;
На основе разработанных тестовых наборов из п1 - можно сгенерить результирующую таблицу, где в ячейках будут ваши значения для каждого поля и последнее поле - результат “passed” || “failed”;
Ну и Nikita верно спрашивает: если валидация на стороне сервера, то на фронте достаточно проверить, как он отображает ответ с сервера. Зачем гонять через UI?
ЗЫ: в Pytest не силен, и возможно мое видение не правильное, но по описанию задания звучит как-то так.
Я не в курсе, что есть в PyTest, в Java я бы использовал TestNG + DataProvider, который натравил бы на файлик. В файлике должны быть перечислены необходимые наборы значений, например, так: