2011-08-19 78 views
0

當我運行一個單元測試,在其中測試兩個整數相等時,我得到一個斷言錯誤異常,而不是unittest報告失敗,然後繼續下一個測試。這裏是測試代碼(大大簡化以證明這一點)。使用unittest斷言引發的異常

import unittest 

class TestClass(unittest.TestCase): 

    def test_method(self): 
     myVariable = 1 
     self.assertTrue(myVariable==0) 

if __name__ == '__main__': 
    unittest.main() 

回溯如下:

builtins.AssertionError: False is not true 
File "C:\Dev\Volleyball\test.py", line 10, in <module> 
    unittest.main() 
File "C:\Program Files\python32\Lib\unittest\main.py", line 124, in __init__ 
    self.runTests() 
File "C:\Program Files\python32\Lib\unittest\main.py", line 270, in runTests 
    self.result = testRunner.run(self.test) 
File "C:\Program Files\python32\Lib\unittest\runner.py", line 168, in run 
    test(result) 
File "C:\Program Files\python32\Lib\unittest\suite.py", line 67, in __call__ 
    return self.run(*args, **kwds) 
File "C:\Program Files\python32\Lib\unittest\suite.py", line 105, in run 
    test(result) 
File "C:\Program Files\python32\Lib\unittest\suite.py", line 67, in __call__ 
    return self.run(*args, **kwds) 
File "C:\Program Files\python32\Lib\unittest\suite.py", line 105, in run 
    test(result) 
File "C:\Program Files\python32\Lib\unittest\case.py", line 498, in __call__ 
    return self.run(*args, **kwds) 
File "C:\Program Files\python32\Lib\unittest\case.py", line 446, in run 
    self._executeTestPart(testMethod, outcome, isTest=True) 
File "C:\Program Files\python32\Lib\unittest\case.py", line 391, in _executeTestPart 
    function() 
File "C:\Dev\Volleyball\test.py", line 7, in test_method 
    self.assertTrue(myVariable==0) 
File "C:\Program Files\python32\Lib\unittest\case.py", line 527, in assertTrue 
    raise self.failureException(msg) 

難道我做錯了什麼,或者我誤解測試斷言是如何工作的?

爲了記錄在案,我在Windows 7

TIA,艾倫

+0

確認它正常工作在Python 2.7版在Windows 7 – agf

+0

您的代碼對我的作品在Win7 Python 3.2上。你運行了精簡的樣本嗎?堆棧跟蹤具有細微不同的行號。 –

+0

我刪除了幾行,因此行號。不匹配。爲了確保我沒有生氣,我將上面的代碼粘貼到一個名爲test.py的全新文件中,並重新運行它,結果相同。舊回溯已經被編輯以顯示最新的回溯。任何進一步的想法將不勝感激。問候。 –

回答

0

右鍵使用Python 3.2.1 - 感謝@agf我已經達到可接受的折衷。我已經從「調試器:例外」的「始終報告」部分中刪除了AssertionError,現在調試器不再停止該斷言。不足之處在於,雖然在運行測試腳本時這很好(因爲我會在失敗列表中看到結果),但在運行「真實」程序時,我將不得不關注「調試I/O」輸出 輸出查看斷言。

感謝所有回覆的人。使用self.assertEqual

艾倫

0

相反self.assertTrue的(MYVARIABLE == 0)嘗試(MYVARIABLE,0)

+0

好主意,但有同樣的效果:-(。關心 –