pytest之添加日志:pytest测试框架有自己的日志管理开关

前言

保存工作中常用的日志一般来说有两种方式。

①pytest测试框架有自己的日志管理开关。(如果开启pytest测试框架的日志功能,则pytest命令行方式运行测试用例时,在Terminal终端同样会打印日志信息。)

【注意】同时满足①开启pytest测试框架的日志功能②使用python的日志库两个条件,Terminal终端打印的日志格式以及日志级别是我们在log模块中设置的格式。

log_cli参数为true:

log_cli参数为false:

②使用python的日志库。(一般使用此种方式记录用例执行期间的日志)

【注意】当单独运行单个模块的测试用例时,日志内容会根据log配置模块中设置的日志格式以及级别来打印或者保存(比如log等级为error会打印至控制台,log等级为info会保存至log文件),而命令行方式运行时,

一般来说,在测试用例的执行过程中日志记录没有实时输出或者保存至日志文件。显得测试用例的执行结果不够权威。(根据日志的级别将日志分发至不同的终端)

【注意】在项目中应用:①log设置模块;②pytest测试框架日志log_cli参数为true。(这样保证不管是单独运行某个模块的测试用例或者是pytest命令行方式运行测试用例都可以在控制台或者Terminal终端查看到相应的日志信息)

pytest测试框架关于log的命令行参数如下:

 --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] ini-options in the first pytest.ini|tox.ini|setup.cfg file found:

具体操作

①首先pytest测试框架是从pytest.ini中读取log_cli配置的,默认是关闭的即false。【log_cli参数为true代表开启pytest测试框架自己的日志功能,为false表示关闭。】

②在文件根目录下新建一个pytest.ini或tox.ini或setup.cfg文件,然后将日志相关写入,如下:

[pytest]
log_cli=true ; # 开启日记
log_level=NOTSET ; # 日志等级
log_format = %(asctime)s %(levelname)s %(message)s # 日记日期
log_date_format = %Y-%m-%d %H:%M:%S # 日记时间
addopts = -vs # 日志执行的命令

log_file = ./test.log # 日志存放地方
log_file_level = info # 记录日志等级
log_file_format = %(asctime)s %(levelname)s %(message)s # 同记录时间一样
log_file_date_format = %Y-%m-%d %H:%M:%S

③可以使用用pytest -o方式重写(即覆盖ini文件中的log相关的命令行参数);这个功能在pytest 3.4版本之后才实现,如下:

pytest pytest_lean2.py -o log_cli=true -o log_cli_level=INFO

 

posted @ 2021-12-02 10:42  习久性成  阅读(4443)  评论(1编辑  收藏  举报