У меня есть несколько тестов, которые запускаются с использованием pytest, и я хочу иметь отдельный журнал для каждого теста. Как бы я это сделал? Решение, которое у меня сейчас есть, выглядит следующим образом:
@pytest.fixture(autouse=True)
def write_logs(request):
# put logs in tests/logs
log_path = pathlib.Path(ROOT_DIR) / "tests_logs"
# tidy logs in subdirectories based on test module and class names
module = request.module
class_ = request.cls
name = request.node.name + ".log"
if module:
log_path /= f"{module.__name__.replace('tests.', '')}_logs"
if class_:
log_path /= class_.__name__
log_path.mkdir(parents=True, exist_ok=True)
# append last part of the name
log_path /= name
# enable the logger
logger.remove()
fmt = "[{time:YYYY-MM-DD HH:mm:ss}][{level}] - {message}"
"%Y-%m-%d %H:%M:%S"
"YYYY-MM-DD HH:mm:ss"
logger.configure(handlers=[{"sink": log_path, "level": "INFO", "mode": "w", "format": fmt}, {"sink": sys.stdout, "level": "INFO", "format": fmt}])
logger.add(log_path, format=fmt, filter="my_module", level="INFO")
logger.add(sys.stderr, format=fmt, filter="my_module", level="INFO")
logger.enable("my_package")
, но оно не включает сообщения об ошибках pytest, и мне нужно, чтобы они были включены в журнал