在 class 实例中引发时断言不起作用
assert doesn't work when raised in class instance
assert
在 class:
的实例中调用时不会引发异常
class TestCaseTest(TestCase):
...
def testFailedResutFormatted(self):
...
assert False # This doesn't work at all
TestCaseTest("testFailedResutFormatted").run()
assert False # But this works just fine
完整代码可以在这里看到:http://pastebin.com/Hc9CTTxH
我显然做错了什么,因为这些是书中的例子,它们应该有效。我就是想不通这是怎么回事。
assert False
工作很好,但AssertionError
被TestCase.run()
方法捕获,稍后收集。
您没有传入 TestResult
实例,因此在 Python 3 中 TestCase.run()
函数 returns a new 给你的结果对象:
>>> from unittest import TestCase
>>> class TestCaseTest(TestCase):
... def testFailedResutFormatted(self):
... assert False
...
>>> tc = TestCaseTest("testFailedResutFormatted")
>>> tc.run()
<unittest.result.TestResult run=1 errors=0 failures=1>
你看到一个失败记录了。
将 TestResult
实例传递给 TestCase.run()
方法,它将被使用; result.failures
属性显示触发并记录的断言:
>>> from unittest import TestResult
>>> result = TestResult()
>>> tc.run(result)
>>> result
<unittest.result.TestResult run=1 errors=0 failures=1>
>>> result.failures
[(<__main__.TestCaseTest testMethod=testFailedResutFormatted>, 'Traceback (most recent call last):\n File "<stdin>", line 3, in testFailedResutFormatted\nAssertionError\n')]
>>> print result.failures[0][1]
Traceback (most recent call last):
File "<stdin>", line 3, in testFailedResutFormatted
AssertionError
assert
在 class:
class TestCaseTest(TestCase):
...
def testFailedResutFormatted(self):
...
assert False # This doesn't work at all
TestCaseTest("testFailedResutFormatted").run()
assert False # But this works just fine
完整代码可以在这里看到:http://pastebin.com/Hc9CTTxH
我显然做错了什么,因为这些是书中的例子,它们应该有效。我就是想不通这是怎么回事。
assert False
工作很好,但AssertionError
被TestCase.run()
方法捕获,稍后收集。
您没有传入 TestResult
实例,因此在 Python 3 中 TestCase.run()
函数 returns a new 给你的结果对象:
>>> from unittest import TestCase
>>> class TestCaseTest(TestCase):
... def testFailedResutFormatted(self):
... assert False
...
>>> tc = TestCaseTest("testFailedResutFormatted")
>>> tc.run()
<unittest.result.TestResult run=1 errors=0 failures=1>
你看到一个失败记录了。
将 TestResult
实例传递给 TestCase.run()
方法,它将被使用; result.failures
属性显示触发并记录的断言:
>>> from unittest import TestResult
>>> result = TestResult()
>>> tc.run(result)
>>> result
<unittest.result.TestResult run=1 errors=0 failures=1>
>>> result.failures
[(<__main__.TestCaseTest testMethod=testFailedResutFormatted>, 'Traceback (most recent call last):\n File "<stdin>", line 3, in testFailedResutFormatted\nAssertionError\n')]
>>> print result.failures[0][1]
Traceback (most recent call last):
File "<stdin>", line 3, in testFailedResutFormatted
AssertionError