前言
pytest 运行yaml 文件默认在控制台显示简短的信息,当我们需要排查问题时,需开启日志追踪更多的信息。
logging 日志开启
pytest 的日志分2个部分:
- console 控制台输出的日志
- log_file 保存到本地文件的日志
本插件默认情况下会记录运行日志保存在项目根目录logs下,以当前时间保存txt文本日志内容。 日志默认保存info级别。 console 控制台默认不输出日志
开启 console 控制台日志
控制台直接运行 pytest 是不会用日志输出的,因为默认仅输出 warning 以上的级别日志 有3种方式启动 console 日志
方法1:命令行带上--log-cli-level
参数,设置日志级别
>pytest --log-cli-level=info
方法2:pytest.ini 配置开启日志,并且设置日志级别
代码语言:javascript复制[pytest]
log_cli = true
log_cli_level = info
方法3:pytest -o方式重写(即覆盖ini文件中的log相关的命令行参数)
代码语言:javascript复制pytest -o log_cli=true -o log_cli_level=INFO
即可在控制台看到日志
代码语言:javascript复制-------------------------------------------- live log call --------------------------------------------
2022-12-08 08:30:34 [INFO]: 执行文件-> test_demo.yml
2022-12-08 08:30:34 [INFO]: base_url-> None
2022-12-08 08:30:34 [INFO]: variables-> {}
2022-12-08 08:30:34 [INFO]: 运行 teststeps
2022-12-08 08:30:34 [INFO]: -------- request info ----------
POST http://httpbin.org/post
{
"method": "POST",
"url": "http://httpbin.org/post",
"json": {
"username": "test",
"password": "123456"
}
}
2022-12-08 08:30:35 [INFO]: ------ response info 200 OK 0.495961s------
自定义 console 控制台日志
日志的格式和时间格式也可以自定义设置
代码语言:javascript复制[pytest]
log_cli = true
log_cli_level = info
log_cli_format = %(asctime)s %(filename)s:%(lineno)s [%(levelname)s]: %(message)s
log_cli_date_format = %Y-%m-%d %H:%M:%S
自定义保存日志文件
本插件默认情况下会记录运行日志保存在项目根目录logs下,以当前时间保存txt文本日志内容。 日志默认保存info级别。
如果你想改变这些默认的行为,自定义日志文件目录和名称,可以在pytest.ini 配置日志文件 (log_file 相关的结果是保存日志文件到本地)
代码语言:javascript复制[pytest]
log_cli = true
log_cli_level = info
log_cli_format = %(asctime)s %(filename)s:%(lineno)s [%(levelname)s]: %(message)s
log_cli_date_format = %Y-%m-%d %H:%M:%S
log_file = ./yoyo.log
log_file_level = debug
log_file_format = %(asctime)s %(filename)s:%(lineno)s [%(levelname)s]: %(message)s
log_file_date_format = %Y-%m-%d %H:%M:%S
命令行参数配置
log日志的配置也可以用命令行参数配置(pytest -h可以查看)
代码语言:javascript复制 --no-print-logs disable printing caught logs on failed tests.
--log-level=LOG_LEVEL logging level used by the logging module
--log-format=LOG_FORMAT log format as used by the logging module.
--log-date-format=LOG_DATE_FORMAT log date format as used by the logging module.
--log-cli-level=LOG_CLI_LEVEL cli logging level.
--log-cli-format=LOG_CLI_FORMAT log format as used by the logging module.
--log-cli-date-format=LOG_CLI_DATE_FORMAT log date format as used by the logging module.
--log-file=LOG_FILE path to a file when logging will be written to.
--log-file-level=LOG_FILE_LEVEL log file logging level.
--log-file-format=LOG_FILE_FORMAT log format as used by the logging module.
--log-file-date-format=LOG_FILE_DATE_FORMAT log date format as used by the logging module.
还可以使用 pytest -o
方式重写(即覆盖 ini 文件中的 log 相关的命令行参数)
pytest pytest test_log.py -o log_cli=true -o log_cli_level=INFO
完整的教程已上传到gitee https://gitee.com/yoyoketang/pytest-yaml-yoyo上,如果觉得对你有帮助,可以给个 star