2011-08-19 76 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

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