我使用py.test來測試我的python程序。我希望以正常方式(我的意思是代碼中使用pdb.set_trace())調試我的測試代碼,但是我無法使其工作。使用py.test以某種方式調試python調試器嗎?
在代碼中放置pdb.set_trace()不起作用(引發IOError:捕獲輸出時從stdin讀取)。我也試着用選項--pdb來運行py.test,但是如果我想要在我的斷言之前探究會發生什麼,這似乎並沒有成功。當斷言失敗時它會中斷,然後從該行開始意味着終止程序。
有誰知道一種方法來調試,或者正在調試和py.test只是不想在一起?
彼得,謝謝你的建議。 python -m pdb選項引導我完成腳本,但不調用函數,因此儘管對我的Python開發很有用,但我沒有看到如何使這一項工作。 我提到了--pdb選項,但是除非有人能想到如何使用它,否則我無法繼續使用它。 – Joel 2010-04-21 19:39:08
我建議閱讀pdb手冊並學習擊鍵。 pdb將打印接下來要執行的功能。如果你輸入「s」,你將進入該功能。如果您鍵入「n」,這是默認值,那麼您只需轉到下一行代碼。當你想進入你的「主」程序時,很可能你打「n」而不是「s」。 – 2010-04-22 14:34:59
這不是py.test的工作原理。小而有效的py.test測試代碼: def test_arithmetic: assert 2 + 2 == 4 這足以進行單元測試。沒有「main」例程,只是一個以「test_」開頭的函數。如果用普通的python運行它,它只會定義test_arithmetic,而不是運行它。但是py.test找到了以test_開頭的函數,併爲我運行它們,處理失敗的斷言等。 – Joel 2010-04-22 14:55:13