Питання по запуску тест suite-ів, дія в кінці кожного - python

Теги: # # # # # #

Підкажіть будь ласка з декількох питань:

Після кожного тесту я виставляю Log out, що б ато тест виходив на сторінку логіна і знову виконував все по порядку як в тест кейсі, якщо так не роблю, наступний тест валиться, можна зробити по іншому?
Якщо виставляю> driver.close ()
вікно браузера просто закривається і наступний тест не стартує теж.
Як можна зробити гнучко проходження Сюта.

Ось ще, спочатку була проблема налаштувати pytest, як то все таки налаштував, ну ось дивлюся для кожного тесту в блоці (1) створюється нова конфігурація. А в блоці 2 просто скажіть, настройки нормально виглядають, або через те й проблема.
Велике спасибі.

Питання по запуску тест suite-ів, дія в кінці кожного - python

1.png 1102x677 69.3 KB

він просто открьівает новьіе вікна, которьіх при проходження всього світа буде більше 40))

Якщо все нормально дописати, то буде така схема:

  1. Спочатку запуститися код в setup_method (відкриє браузер, перейде на сторінку)
  2. Далі піде виконання коду в test_my_test_1 (кроки тесту, які тобі треба вказати)

Потім виконається teardown_method (закриє браузер)

  • Код в test_my_test_2
  • teardown_method
  • І так для всіх тестових методів, зазначених у класі.

    def setup_method (self, method):
    self.driver = webdriver.Firefox ()
    self.driver.maximize_window ()
    self.driver.get (app_url)

    як то так виходить

    Питання по запуску тест suite-ів, дія в кінці кожного - python

    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

    Питання по запуску тест suite-ів, дія в кінці кожного - python

    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, воно починає дивитися з верху виділеного модуля і приймає перший що знайшов (а оскільки новий створюється в низу, то зразу помилка).

    Питання по запуску тест suite-ів, дія в кінці кожного - python

    4.png 994x799 43.5 KB