日志格式配置
pytest.ini,内容包含terminal和日志文件
[pytest]
addopts = --capture=no
;日志开关 true/false、1/0
log_cli = 1
;输出到terminal
;日志级别
log_cli_level = info
;打印详细日志,相当于命令行加 -vs
;addopts = --capture=no
;日志格式
log_cli_format = %(asctime)s [%(levelname)s] %(message)s (%(filename)s:%(lineno)s)
;日志时间格式
log_cli_date_format = %Y-%m-%d %H:%M:%S
; 输出到文件
;日志文件位置
log_file = ./log/test.log
;日志文件等级
log_file_level = info
;日志文件格式
log_file_format = %(asctime)s [%(levelname)s] %(message)s (%(filename)s:%(lineno)s)
;日志文件日期格式
log_file_date_format = %Y-%m-%d %H:%M:%S
说明:
1、日志文件以写入模式打开,每次运行测试都会覆盖上一次日志文件内容
2、日志输出的时候不要用print,要采用logger进行输出
使用
示例:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author : 韧
import logging
logger = logging.getLogger(__name__)
def test_case():
logger.info("断言1==1")
assert 1==1
结果:
生成了日志目录和文件
待解决:
如果使用loguru:from loguru import logger
日志没写入日志文件
动态生成log文件名
conftest.py中:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author : 韧
import os
from datetime import datetime
# 动态生成log文件的名称,哪怕配置文件中配置了log_file = ./log/test.log也不会生效
def pytest_configure(config):
time_now = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
config.option.log_file = os.path.join(config.rootdir, 'log', f'{time_now}.log')
结果:
【bak】
__EOF__
本文作者:持之以恒(韧)