''' func.py '''
import logging
def func():
''' func '''
logging.basicConfig(
format="\t %(filename)s"
" %(funcName)s"
"-ln%(lineno)d"
" %(levelname)s \n%(message)s",
level=logging.DEBUG,
# stream=sys.stdout,
)
logger = logging.getLogger()
logger.info(" >>> logger func info")
logger.warning(" >>> logger func warning")
print(" >>> print func info")
def test_func():
''' test func '''
# caplog.set_level(logging.DEBUG)
func()
if __name__ == "__main__":
test_func()
假设我将上面的代码保存为 func.py。当我运行时
pytest -s func.py
我得到了
" >>> print func info".
如何获得
" >>> logger func info"
和
">>> 记录器功能警告"
当我运行时
pytest -s func.py
我希望我能这样做,原因如下。我通常在我的代码中插入logging.debug/info等。有时,我想在运行 pytest 时查看logging.debug/info 发出的消息。我在网上搜索了很长一段时间但找不到方法。预先感谢您的帮助。
最佳答案
要在每次运行时默认执行此操作,请添加到 pytest.ini:
[pytest]
log_cli = true
log_cli_level = DEBUG
注意:如果使用非常旧的 pytest(3.5 之前的版本),您需要在 pytest.ini 中设置 log_cli = true
才能使用以下命令。
否则,对于 3.5 及更高版本,您可以根据具体情况仅使用命令行:
pytest --log-cli-level=10 func.py
或更清楚地说:
pytest --log-cli-level=DEBUG func.py
命令行将始终覆盖 pytest.ini 设置。
关于debugging - pytest:如何在测试的函数中显示来自logging.debug的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51466586/