можно и без фикстуры
Пример:
def pytest_runtest_call(item):
item._obj = check_wrapper(item._obj)
def check_wrapper(func):
def func_wrapper(*args, **kwargs):
try:
func(*args, **kwargs) # No return values
except AssertionError as ae:
logger.error(f"Assertion failed: {str(ae)}")
raise
except Exception as e:
logger.exception(str(e))
logger.error(f"Local variables: {sys.exc_info()[2].tb_next.tb_frame.f_locals}")
raise
update_wrapper(func_wrapper, func)
return func_wrapper