【问题标题】:Exception raised with unittest assertionsunittest 断言引发的异常
【发布时间】:2011-08-19 03:06:33
【问题描述】:

当我运行单元测试来测试两个整数是否相等时,我得到一个断言错误异常,而不是 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 上使用 Python 3.2.1。

蒂亚,艾伦

【问题讨论】:

  • 确认它在 Windows 7 上的 Python 2.7 上运行良好。
  • 您的代码适用于我在 Win7 Python 3.2 上。您是否运行过精简的样本?堆栈跟踪的行号略有不同。
  • 我删除了几行,因此该行没有。不匹配。为了确保我不会发疯,我将上面的代码剪切并粘贴到一个名为 test.py 的全新文件中,然后重新运行它,结果相同。旧的回溯已被编辑以显示最新的回溯。任何进一步的想法将不胜感激。问候。
  • 好的,我已经取得了突破。在 Windows 命令行下,测试按预期工作,我得到正确的失败消息。但是,当我在 WingIDE 中进行测试时(我的大部分开发、测试和调试工作都是在这里进行的),我得到了上述异常。任何想法如何治愈这个? TIA
  • 在旧的变更日志中,我看到* Debugger always stops on AssertionError exceptions and never on SystemExit exceptions by default. This behavior can be changed via preferences. 您是否尝试过更改此首选项?编辑:读读这个,可能无关紧要。

标签: python unit-testing assertions python-unittest


【解决方案1】:

好的 - 感谢@agf,我已经达成了可以接受的妥协。我已从“调试器:异常”的“始终报告”部分中删除了 AssertionError,现在调试器不再停止断言。不利的一面是,虽然在运行测试脚本时这很好(因为我会在失败列表中看到结果),但在运行“真实”程序时,我必须留意“调试 I/O” 输出以查看断言。

感谢所有回复的人。

艾伦

【讨论】:

    【解决方案2】:

    代替 self.assertTrue(myVariable==0) 尝试使用 self.assertEqual(myVariable, 0)

    【讨论】:

    • 好主意,但效果相同:-(。问候
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2012-04-07
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多