Вы можете получить доступ к переменным уровня модуля в хуках через item.module
, например,
def pytest_runtest_makereport(item, call):
yield
log_file = item.module.log_file
log_suite = item.module.log_suite
...
и т. Д.Однако вы не сможете получить доступ к переменным из локальной области функции, они к тому времени уже исчезли.Вы можете назначить их самому модулю, например, pytest
:
def test_permutations(t_params):
pytest.log_test = True
def pytest_runtest_makereport(item, call):
yield
log_test = pytest.log_test
или текущему тестовому модулю:
def test_permutations(t_params):
globals()['log_test'] = True
def pytest_runtest_makereport(item, call):
yield
log_test = item.module.log_test
или использовать все, что определено глобально, например,кеш:
def test_permutations(t_params, request):
log_test = True
request.config.cache.set('log_test', log_test)
def pytest_runtest_makereport(item, call):
yield
log_test = item.session.config.cache.get('log_test', None)
Кстати, нет такого хука, как pytest_runtest_logger
, перепроверьте это имя, иначе тесты не будут запущены.Вот справочник всех доступных хуков .