0
我在包含the capfd
fixture的測試中運行ipdb
時遇到問題。測試代碼的削減版本是這樣的:調試器輸出未顯示
import pytest
import sys
def test_foo(capfd):
def foo():
print("Hello World!")
foo()
out, err = capfd.readouterr()
import ipdb
ipdb.set_trace()
assert out == "Hello World!\n"
當我運行py.test -s test/test_capfb.py
,調試器的所有輸出會被抓,我什麼也看不見。我仍然可以向調試器發出命令(例如下面輸出中的c
),但在整個過程完成運行之前不會輸出。輸出的樣本是在這裏:
; py.test -s tests/test_capfb.py
============================= test session starts ==============================
platform linux2 -- Python 2.7.5, pytest-2.8.7, py-1.4.31, pluggy-0.3.1
rootdir: /home/usr/repos/junk, inifile: setup.cfg
plugins: bdd-2.16.0, colordots-0.1, cov-2.2.1, html-1.7, pep8-1.0.6, xdist-1.14, catchlog-1.2.2
collected 1 items
tests/test_capfb.py
c <---- I typed this!
--Return--
None
> /home/usr/repos/junk/tests/test_capfb.py(12)test_foo()
11 import ipdb
---> 12 ipdb.set_trace()
13
ipdb> .
========================== 1 passed in 228.90 seconds ==========================
有沒有辦法告訴pytest
時ipdb
涉及停止捕獲標準輸出/標準錯誤?
現在,如果可能的話,與nosetests運行測試 - IPDB檢測到鼻子被加載並停止捕獲標準輸出。看起來在下一個版本(0.9.1)中會有更通用的方法:https://github.com/gotcha/ipdb/pull/84/files –
@ThomasK:你的解決方案不會因爲「鼻子」對[py.test fixtures]一無所知(https://pytest.org/latest/fixture.html)。感謝您的鏈接。 – Sardathrion