Forum Testowania i AutomatyzacjiKategoria: PytaniePo wykonaniu testu przeglądarka się zamyka
AvatarBartosz Stefaniak zapytał 5 lat temu

Cześć,
Mam taki problem, ponieważ po wykonaniu testu/testów przeglądarka jest zamykana automatycznie. Dodam, że nie mam nigdzie wpisanej linijki self.driver.quit().
mój tearDown:

def tearDown(self):
pass

Jakiś pomysł dlaczego tak się dzieje ? Jak będzie potrzebny mogę wkleić cały kod
 

1 odpowiedzi
Przemek BarańskiPrzemek Barański Personel odpowiedział 5 lat temu

Hej Bartek
Trafne spostrzeżenie. Takie zachowanie wynika z działania wbudowanego Runnera który uruchamiania testy w PyCharam. Runner PyCharma obecnie czyści automatycznie testy. Jest to trochę nieintuicyjne gdyż uruchomienie testów z konsoli da Tobie inny wynik:

Użyj zakładki Terminal znajdującej się na samym dole IDE i tam wklej polecenie manualnego uruchomienia testów:

python -m unittest auto_test_2.py

Powinno pomóc. Generalnie trzymamy się koncepcji używania metod czyszczących gdyż kod naszych testów powinien być łatwo uruchamiany nie tylko przez PyCharma a jak widzisz zmieniają się funkcje i zachowania wbudowanego w PyCharma Runnera testów i trzeba być w tym temacie ostrożnym.

Dzięki za zwrócenie uwagi na ten ciekawy przypadek 😀

EDIT:
Wyniesienie inicjalizacji drivera po za deklarację klasy spowoduje, że przeglądarka przestanie się zamykać nawet przy uruchomieniu z Runnera z PyCharma.

import unittest
from selenium import webdriver

driver = webdriver.Chrome(executable_path=r"C:\TestFiles\chromedriver.exe")

class MainTests(unittest.TestCase):        
    
    def test_demo_login(self):
        driver.get('https://demobank.jaktestowac.pl/logowanie_etap_1.html')
        title = driver.title
        print(title)
        assert 'Demobank - Bankowość Internetowa - Logowanie' == title
Przemek BarańskiPrzemek Barański Personel odpowiedział 5 lat temu

O tak – wystarczy wynieść inicjalizację drivera po za klasę czyli przed nazwę klasy i wtedy przeglądarka się nie zamknie – dodam ten kod do głównej odpowiedzi:D

AvatarBartosz Stefaniak odpowiedział 5 lat temu

Oczywiście ogólnie w testach wykorzystuję self.driver.quit() po zakończeniu testów, ale zdziwiło mnie to przy chwilowym wykomentowaniu tej linijki.

Co ciekawe mam inny projekt w którym otworzenie przeglądarki mam dla klasy (nie w metodzie) i testy są wykonywane w tym samym oknie przeglądarki i mam:
def tearDownClass(self):
pass

I co ciekawe tutaj okno przeglądarki nie jest zamykane przez Runnera