Теги: #
Підкажіть будь ласка з декількох питань:
Після кожного тесту я виставляю Log out, що б ато тест виходив на сторінку логіна і знову виконував все по порядку як в тест кейсі, якщо так не роблю, наступний тест валиться, можна зробити по іншому?
Якщо виставляю> driver.close ()
вікно браузера просто закривається і наступний тест не стартує теж.
Як можна зробити гнучко проходження Сюта.
Ось ще, спочатку була проблема налаштувати pytest, як то все таки налаштував, ну ось дивлюся для кожного тесту в блоці (1) створюється нова конфігурація. А в блоці 2 просто скажіть, настройки нормально виглядають, або через те й проблема.
Велике спасибі.
1.png 1102x677 69.3 KB
він просто открьівает новьіе вікна, которьіх при проходження всього світа буде більше 40))
Якщо все нормально дописати, то буде така схема:
- Спочатку запуститися код в setup_method (відкриє браузер, перейде на сторінку)
- Далі піде виконання коду в test_my_test_1 (кроки тесту, які тобі треба вказати)
Потім виконається teardown_method (закриє браузер)
І так для всіх тестових методів, зазначених у класі.
def setup_method (self, method):
self.driver = webdriver.Firefox ()
self.driver.maximize_window ()
self.driver.get (app_url)
як то так виходить
testexample_py _-_ PycharmProjects _-____ PycharmProjects_.png 1019x868 118 KB
Всі тестові методи повинні бути всередині класу (див на відступи).
Звернення до драйверу всередині методів повинні йти через покажчик self:
P.S. Якщо PyCharm щось підкреслює червоним, значить буде помилка при запуску скрипта. Потрібно вирішити ці питання в коді. Наскільки я бачу, потрібно зробити, як мінімум:
Тести повинні бути всередині класу. Почитайте про об'єкти і класи в пітона.
А взагалі раджу не вбивати і запускати браузер, а просто чистити його - видаляти куки, session storage, local storage, і перевідкривати сторінку перед кожним тестом. Відкривати новий браузер - досить довго.
Спасибо большое, зробив по нормальному, все запустилось і виконується, навіть якщо один тест впав, наступний запускаеться. Тільки я прибрав слово method, воно було виділено сірим все одно і без нього запуск такої ж. Ет нормально?
from selenium import webdriver
driver = webdriver.Chrome ()
import time
Проблема, запускаеться тільки весь світ.
Хоча проблема можливо не в цьому,
Є два файли
testsmokeAP.py - де мої основні тести
і test.py - де я спочатку експерементіруйте ці добавлніе і рекомендації на тих же тестах (де додав class і т.д)
Так ось, для файлу testsmokeAP.py (Якщо запускати весь сьют) запускається pytest = pytest for testsmoke. якщо окремо то pytest + назва тесту, який запускаю
А для файлу test.py (якщо запускаю все, все ок, запускається pytest = p.test for 11test.py) якщо запустити один тест то запускається конфігурація test з розділу python в мень конфігурацій (замість концігураціі p.test for 11test.py з розділу python tests) Screenshot 3
3.png 1046x693 70.4 KB
Цей файл лежить в папці з пакетом
Тобто коли клацаю правою кнопкою миші, у мене замести Run p.test for 11test.py чому то Run test
Хоча в файлі testsmokeAP.py все ок
Так, спасибі, тепер буду додавати в класи, так і зручніше і передумова можна виставляти, Тпер дії логіна я просто виніс в початок і немає потреби копіпаст в кожен тест.
А взагалі раджу не вбивати і запускати браузер, а просто чистити його - видаляти куки, session storage, local storage, і перевідкривати сторінку перед кожним тестом. Відкривати новий браузер - досить довго.
Я думаю що це цей метод краще звичайно, але поки я не можу написати такий код на Пайтон, що б він робив такі функції, а так звичайно я б уже зараз хотів би що б і відсилання email перевіряв і чи дійсно користувач видалений за бази даних і т.д але поки не знаю як (поки), тут навіть я з вами згоден поки ще селектори жахливі. Наприклад мені поки не дуже зрозуміло як надійно зробити, що б я був впевнений що я створив нову template в і вона з'явилася в цьому списку (скріншот) Я дивлюся скільки у мене вже є, і яка по xpath буде наступна (наприклад td [11] ) я беру код з попереднього тільки міняю цифру.
Потім цією командою перевіряю з'явився темплейт в списку
mistake_text = driver.find_element_by_xpath ( "тут ім'я предположитольного елемента який з'явитися після створення нового темплейта"). text
assert mistake_text == "template name"
Пробував через tag, воно починає дивитися з верху виділеного модуля і приймає перший що знайшов (а оскільки новий створюється в низу, то зразу помилка).
4.png 994x799 43.5 KB