我有一个Python单元测试,在拆解过程中失败了。这是目前的预期失败。我正在使用Python 2.7中的标准unittest
库。
#!/usr/bin/env python2
import unittest
class MCVE(unittest.TestCase):
def setUp(self):
self.invariant = True
def tearDown(self):
self.assertTrue(self.invariant)
@unittest.expectedFailure
def test1(self):
self.invariant = False
if __name__ == '__main__':
unittest.main()
因为在拆卸过程中发生了故障,expectedFailure
装饰器会导致测试用例是否成功引起一些混淆:它们都被报告为意外成功(因为测试用例本身没有失败)并且是意外的失败(因为拆解失败)。
uE
======================================================================
ERROR: test1 (__main__.MCVE)
----------------------------------------------------------------------
Traceback (most recent call last):
File "./a.py", line 8, in tearDown
self.assertTrue(self.invariant)
AssertionError: False is not true
----------------------------------------------------------------------
Ran 1 test in 0.001s
FAILED (errors=1, unexpected successes=1)
我不想将不变检查移出拆解,因为需要对所有测试执行。另一方面,我希望尽可能明显地预测这个测试用例会失败,而不需要修改测试用例(现在很好)。我宁愿不跳过测试,因为如果它意外地成功,那可能表明另一个错误。理想情况下,我想保留装饰器机制,并调整装饰器或拆卸代码或两者。
如何在拆解期间为测试用例注释显式失败?