При создании пользователя у нас есть ряд валидаций на вводимые данные - часть из них происходит на фронтенде, часть - осуществляется бэкендом. Фронтовая валидация отмечает поля красными и пишет под ними текст ошибки, а бэковая отправляет всплывающую нотификацию с текстом ошибки, которая исчезает через несколько секунд. Скриншот нотификации прикладываю.
Когда я пишу автотесты на вылавливание текста ошибок, код выглядит так (мы используем PageObject):
Локатор текста из нотификации (я пробовала и class_name, и другие варианты селекторов):
def get_notification_text(self):
element = self.driver.find_element(*BaseLocators.NOTIFICATION_TEXT).text
return element
Поиск текста ошибки на странице и сравнение с тем, каким он должен быть:
error = users_page.get_notification_text()
assert error == "Email is already in use"
Когда я дебажу этот кусочек кода (PyCharm IDE, встроенная питоновская консоль), порядок действий таков: открываю нужную страницу в экземпляре драйвера (chrome/gecko), заполняю ее данными для срабатывания нужной нотификации, в консоли заведомо вбиваю код:
После чего быстренько нажимаю кнопку "создать пользователя" и отправляю код выше на исполнение в консоли чтобы он сработал в момент появления нотификации. Получаю вроде как успех: скриншот 2. После чего я уже непосредственно запускаю прогон тестов, и тут начинается магия. Ставлю breakpoint в IDE для отладки ассертов, и вижу вот что: assert error == "Email is already in use" прошла успешно, тест зеленый, а в следующем тесте с точно таким же кодом (только err заменен на msg), но другим текстом нотификации результат таков: скриншот 3.
На нем видно, что в msg ничего не сохранилось, текста ошибки нет.
Итоговая ошибка теста:
> assert msg == "User was created successfully"
E AssertionError: assert '' == 'User was created successfully'
E + User was created successfully
test_users.py:91: AssertionError
И эта ошибка повторяется на всех последующих тестах, где мне надо получить текст нотификации.
Есть ли какие-то советы по тому, как это пофиксить?
Здравствуйте. Хочу реализовать проверку регистрации и авторизации пользователя на сайте. Для этого написал два теста, один на регистрацию, а второй, соответственно, на авторизацию. Причем, планирую использовать тест в нескольких браузерах и часто прогонять его.
Для регистрации использую скрипт, который копирует рандомную почту с одно сайта и вставляет это значение куда надо.
driver.get("https://www.mailinator.com/");
String mail = driver.findElement(By.xpath("/html/body/section[1]/div/div[3]/div[2]/div[2]/div[2]/h4[3]/span/a")).getText();
Но возникла проблема с реализацией авторизации через только что зарегистрированную почту, так как второй тест не видит эту переменную с почтой.
Подскажите, как бы можно было это реализовать?
Ибо если повторно зайти на страницу то будет уже новая почта. Да и тесты не должны быть независимы друг от друга (если по правильному).
UPD: Да, забыл добавить что использую Selenium web driver + java + testNG + log4j
31 октября в 19:00 состоится фееричный онлайн-финал Serial Hacking October в формате онлайн-трансляции. Serial Hacking October – это четыре независимых хакатона от CryptoBazar Fund, крупнейшего в России и странах СНГ венчурного инвестора в блокчейн-индустрии: Serial Hacking september, Serial Hacking october, Serial Hacking november и Serial Hacking december. Участвовать и претендовать на победу можно в одном, нескольких или сразу во всех из них https://goo.gl/kckBv5☝️ ????Призовой фонд октябрьского хакатона составляет 1 200 000 рублей. ????Организатор-крупнейший инвестиционный фонд и блокчейн сообщество - CryptoBazar Fund, а также Fantom, и партнеры QuarkChain, NuCypher, ANKR, LINO. Заходи к нам на трансляцию и узнай кто отправится в Гонконг, а также сколько денег получит главнй финалист
Баг-хантинг – распространенная практика в мировых тест-организациях. Однако некоторые тест-менеджеры думают, что баг-хантинг – это поиск багов на границах через неформальные эксперименты с приложением.
Что такое баг-хантинг (и чем он не является)?
Баг-хантинг – это неформальные упражнения по тестированию. Не надо путать их с ситуацией, когда вы развлекаетесь с приложением без цели и смысла, а также не смешивайте их с исследовательским тестированием. Вот почему:
Баг-хантинг – это групповая деятельность, а исследовательское тестирование может проводиться единолично.
Цель баг-хантинга – подключить к процессу тех, кто не является тестировщиком, и найти неочевидные баги. Исследовательское тестирование нацелено на "обычные" баги, и им обычно занимаются исключительно тестировщики.
Исследовательским тестированием можно заниматься на любой стадии процесса разработки. Баг-хантинг приносит пользу, если приложение достаточно стабильно.