pytest如何在src代码中启用print()?

How can pytest enable print() in src code?

这是我的代码

在module.py中:

def myFunc():
    print('aaa')

在测试中_module.py:

def test_myFunc():
    print('bbb')
    myFunc()

如果我 运行 pytest -s test_module.py 那么我可以看到打印输出 bbb;但我看不到打印输出 aaa。 其实我也试过import logging玩记录器,也没有运气。

所以基本上我的问题是,当触发 pytest 时,我们如何从 src 代码中看到打印输出?

我可以确认 pytest -s 完成了这项工作。

pytest -s test_module.py

# test_module.py bbb
# aaa

然而,使用 Python logging 模块进行调试可能是更好的主意。例如,您只需要导入 logging 并通过对 logging.info() 的适当级别调用来替换打印。

# module.py
import logging

def myFunc():
    logging.info('aaa')

# test_module.py
from module import myFunc
import logging

def test_myFunc():
    logging.info('bbb')
    myFunc() 

这是输出。

pytest --log-cli-level=INFO test_module.py 

# INFO     root:test_module.py:6 bbb
# INFO     root:module.py:4 aaa

有关日志记录的 Pytest doc 更多信息。