Перейти к содержимому

Фотография

Не работает finalizer фикстуры (pytest)


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 Dob3r

Dob3r

    Новый участник

  • Members
  • Pip
  • 27 сообщений
  • ФИО:Dober


Отправлено 15 ноября 2017 - 07:54

Добрый день!

 

Код вот такой (вот так я хочу закрывать фикстуру):

 

@pytest.fixture(scope="session")
def app(request):
    global fixture
    fixture = webdriver.Chrome()
    return fixture

 

@pytest.fixture(scope="session", autouse=True)
def stop(request):
    def fin():
        fixture.quit()
    request.addfinalizer(fin)
    return fixture
 
Но почему то finalizer не работает, выскакивает ошибка fixture.quit(), fixture not defined
 
Подскажите кто занет, что здесь не так?

  • 0

#2 Maksim1

Maksim1

    Новый участник

  • Members
  • Pip
  • 1 сообщений
  • ФИО:Maksim

Отправлено 15 ноября 2017 - 11:03

Предположу что фикстура с параметром autouse=True выполняется раньше, чем задается ваша глобальная переменная. А вообще лучше делать так: 

@pytest.fixture()
def get_driver(request):
    driver = webdriver.Chrome(executable_path=driver_path, service_log_path=log_path)
    def close_driver():
        driver.quit()
    request.addfinalizer(close_driver)
    return driver

Ибо использовать глобальные переменные когда есть фикстуры - это так себе занятие


  • 0

#3 Dob3r

Dob3r

    Новый участник

  • Members
  • Pip
  • 27 сообщений
  • ФИО:Dober


Отправлено 15 ноября 2017 - 12:01

Спасибо. Да, я знаю что как вы указали можно делать. Но мне очень интересно почему код не работает так как я написал.

 

Убрал autouse, теперь браузер запускается, но, как и ожидалось, не закрывается.


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных