Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 单元测试拆卸期间的预期故障_Python_Python Unittest - Fatal编程技术网

Python 单元测试拆卸期间的预期故障

Python 单元测试拆卸期间的预期故障,python,python-unittest,Python,Python Unittest,我有一个Python单元测试,在拆卸过程中失败。这是目前预期的失败。我正在使用Python 2.7中的标准库 #!/usr/bin/env python2 import unittest class MCVE(unittest.TestCase): def setUp(self): self.invariant = True def tearDown(self): self.assertTrue(self.invariant) @unit

我有一个Python单元测试,在拆卸过程中失败。这是目前预期的失败。我正在使用Python 2.7中的标准库

#!/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
decorator会导致一些关于测试用例是否成功的混淆:它既被报告为意外成功(因为测试用例本身没有失败),也被报告为意外失败(因为拆卸失败)

我不想将不变量检查移出拆卸,因为它需要对所有测试执行。另一方面,我希望尽可能清楚地表明,在不修改测试用例的情况下,这个测试用例可能会失败(现在还可以)。我不想跳过这个测试,因为如果它意外成功,那可能意味着另一个bug。理想情况下,我希望保留decorator机制,并调整decorator或teardown代码,或两者兼而有之


如何在拆卸期间为测试用例注释显式失败?

我认为测试仍将运行,因此
invariant
实际上仍将更改为False。只是当您使用
expectedFailure
装饰器时,失败不会被视为失败。我不认为unittest有一种在拆卸中定义预期失败的方法-您的断言应该在测试本身中。您不能断言
invariant
是否在内部正确地更改为
False
test1
?因此,如果它被意外更改,测试将失败,从而使您能够从
test1
中注意到异常调用
teardown
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)