如果另一个先前的测试方法在 Python 中使用 unittest 失败,如何跳过测试方法?
How to skip a test method if another previous test method failed with unittest in Python?
我有一个 unittest 测试用例,有两种不同的方法。如果第一种方法失败,我希望跳过第二种方法。
我正在使用装饰器@unittest.skipIf,但找不到合适的条件。
class myTest(unittest.TestCase):
def test_1(self):
self.assertEqual(1,2)
@unittest.skipIf(????,'test_2 was skipped because test_1 failed')
def test_2(self):
pass
if __name__ == '__main__':
unittest.main()
skipIf
是在 class 声明时求值的,现在还不知道 test_1
的结果。单元测试是独立的,你暗示这些测试不是独立的,所以一种选择是将测试 2 逻辑放在测试 1 中;如果测试的早期部分失败,它将不会执行:
class myTest(unittest.TestCase):
def test_1(self):
self.assertEqual(1,2)
# move test 2 logic here
self.assertTrue(something)
或者,根据测试按字母顺序排序的事实,您可以使用 failfast
选项,这将导致测试运行程序在第一个测试失败后立即停止。显然,这种方法也会跳过 test_2
之后的任何后续测试。
if __name__ == '__main__':
unittest.main(failfast=True)
我有一个 unittest 测试用例,有两种不同的方法。如果第一种方法失败,我希望跳过第二种方法。
我正在使用装饰器@unittest.skipIf,但找不到合适的条件。
class myTest(unittest.TestCase):
def test_1(self):
self.assertEqual(1,2)
@unittest.skipIf(????,'test_2 was skipped because test_1 failed')
def test_2(self):
pass
if __name__ == '__main__':
unittest.main()
skipIf
是在 class 声明时求值的,现在还不知道 test_1
的结果。单元测试是独立的,你暗示这些测试不是独立的,所以一种选择是将测试 2 逻辑放在测试 1 中;如果测试的早期部分失败,它将不会执行:
class myTest(unittest.TestCase):
def test_1(self):
self.assertEqual(1,2)
# move test 2 logic here
self.assertTrue(something)
或者,根据测试按字母顺序排序的事实,您可以使用 failfast
选项,这将导致测试运行程序在第一个测试失败后立即停止。显然,这种方法也会跳过 test_2
之后的任何后续测试。
if __name__ == '__main__':
unittest.main(failfast=True)