我正在使用 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 不会被执行。