Zacząłem bawić się trochę Pythonem i Selenium. Jestem na etapie organizacji struktury projektu testowego i wypracowania jakiegoś dobrego podejścia.
Repo: https://github.com/GKotfis/PythonLearn/tree/master/UITest
w pliku conftest.py zadeklarowałem fixture, który ma za zadanie wstrzelić instancję webdrivera do klas testowych:
import pytest
from selenium import webdriver
@pytest.fixture(scope="session")
def driver_init(request):
print("initiating chrome web driver")
web_driver = webdriver.Chrome()
session = request.node
for item in session.items:
cls = item.getparent(pytest.Class)
setattr(cls.obj, "driver", web_driver)
yield
web_driver.close()
Następnie w przykładowym teście korzystam z niego:
def test_should_have_correct_title(self):
self.driver.get(urls.LOGIN_PAGE)
assert "SimData Manager 6.0" in self.driver.title
Jak do tej pory nic odkrywczego. Korzystam z artykułów dostępnych w sieci. Z tym rozwiązaniem mam jeden problem - brak intelisense w edytorze. Próbowałem zrobić taki myk aby wskazać, jakiego typu jest atrybut (zmienna) 'driver', poprzez deklaracje metody, w której definiuje self.driver
i to powiedzmy do pewnego stopnia VS Code dopuszcza. Ale pylint rzuca błędem W0201 i po chwili już nawet self nie jest poprawnie rozpoznawany. Także mam tu dwa problemy i z edytorem i podejściem jakoś do tego tematu.
def initialize(self, driver: WebDriver):
self.driver: WebDriver = driver