没有输出,即使使用 `py.test -s`

No output, even with `py.test -s`

我想将 py.testhunter 结合使用:

PYTHONHUNTER="module_startswith='foo'" py.test -s -k test_bar

很遗憾,hunter 的输出(跟踪)不可见。

版本:

foo_cok_d@aptguettler:~$ py.test --version

This is pytest version 3.4.2, imported from /home/foo_cok_d/local/lib/python2.7/site-packages/pytest.pyc
setuptools registered plugins:
  pytest-xdist-1.22.2 at /home/foo_cok_d/local/lib/python2.7/site-packages/xdist/looponfail.py
  pytest-xdist-1.22.2 at /home/foo_cok_d/local/lib/python2.7/site-packages/xdist/plugin.py
  pytest-forked-0.2 at /home/foo_cok_d/local/lib/python2.7/site-packages/pytest_forked/__init__.pyc

在更简单(更小)的 virtualenv 中它可以工作(相同的 pytest 版本,但没有插件)。

可能是什么原因?

如何调试?

我找到了解决方法。

如果我使用这两行,那么 py.test-s 选项(--capture=no 的快捷方式)有效。

    def test_when_the_moon_is_in_the_seventh_house(self):
+        import hunter
+        hunter.trace(module_startswith='modlink')
        ...

而且我会看到比赛,我很高兴。

不修改源代码的解决方案就好了。

  1. 使用相应的 pytest 选项进行调试:

    pytest -v --tb=long

  2. 运行 程序处于调试模式,在 IDE.

  3. 中有断点

示例:How to debug in PyCharm.