Пишу тесты на python + py.test и напрягает одна особенность с автокомплитом.
Допустим есть фикстура базы данных:
@pytest.yield_fixture
def mngdb():
mngdb = MngDBHelper()
yield mngdb
mngdb.destroy()
В MngDBHelper() есть ряд методов для работы с БД. Проблема, в том, что когда я передаю эту фикстуру в тест, то после написания mngdb. - PyCharm не предлагает автокомплитом методы класса MngDBHelper()
def test_login(mngdb):
mngdb.get_random_user()
...
В принципе, это не такая большая проблема, и характер её понятен (как я понял, в статике IDE не знает ничего о содержимом mngdb), но с автокомплитом реально удобнее. C этим мирятся или как то по другому решают проблему?
Конечно можно отказаться от фикстуры mngdb и просто импортировать модуль mngdb, но это только частный случай. Есть пример серьезнее - Например page object, описанный в документации (6. Page Objects — Selenium Python Bindings 2 documentation) - когда я захочу в странице-объекте MainPage(), сделать новый метод:
def click_home_button(self):
element = self.driver.find_element(*MainPageLocators.HOME_BUTTON)
element.click()
то после self.driver. - автокомплит не предложит команды вебдрайвера - что опять же очень неудобно.
Вопрос в том, можно ли как-то настроить PyCharm? Или если хочешь автокомплит методов вебдрайвера, в страницах-объектах - то обязательно нужно объявлять webdriver в init BasePage?
class BasePage(object):
def __init__(self):
self.wd = webdriver.Chrome()