如果选择运行所有测试,PyTest 记录器不显示任何输出

时间:2021-07-23 23:37:40

标签: python pytest pytest-logger

我正在使用 pytest-logger==0.5.1 在控制台上打印日志并插入到日志文件中。

以下是目录结构-

    .
    ├── catalog
    │   └── tests
    │       ├── conftest.py
    │       ├── test_create.py
    │       └── test_update.py
    └── run_tasks.py

conftest.py

def pytest_logger_config(logger_config):
    if os.environ.get('VERBOSE') == 'True':
        import logging
        logger = logging.getLogger('Log')
        logger.setLevel(logging.INFO)
        stdout = logging.StreamHandler(sys.stdout)
        logger.addHandler(stdout)
    else:
        logger_config.add_loggers(['Log'], stdout_level='debug')
        logger_config.set_log_option_default('Log')

def pytest_logger_logsdir(config):
    return os.path.join(os.environ.get('OUTPUT_DIR'), 'logs')

test_create.py

import pytest
import logging
Log = logging.getLogger('Log')


class TestCreateAsset():
    @pytest.mark.parametrize("x, y", [("a", "b")], indirect=["x"])
    def test_indirect(self, x, y):
        Log.info("xxxx")
        Log.info("yyyy")
        assert x == "aaa"
        assert y == "b"

run_tasks.py

import os
import pytest
cmd1 = ["pytest", "-s", "-v", "--html-report", "./report.html", "catalog/tests/test_create.py"]
cmd2 = ["pytest", "-s", "-v", "--html-report", "./report.html"]

os.environ['VERBOSE'] = True
#return pytest.main(cmd1)
return pytest.main(cmd2)

当我从 run_task.py 执行 cmd1 时,pytest-logger 会生成控制台/详细输出。

当我从 run_task.py 执行 cmd2 时,pytest-logger 不会生成控制台/详细输出,也不会创建日志文件。 pytest 钩子 pytest_logger_config 不会被执行。

0 个答案:

没有答案