Как записать результаты pytest в несколько файлов журнала на основе каждого теста - PullRequest
1 голос
/ 26 февраля 2020

У меня есть несколько тестов, которые запускаются с использованием 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, и мне нужно, чтобы они были включены в журнал

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...