如果另一个先前的测试方法在Python中使用unittest失败,如何跳过测试方法?

时间:2017-05-12 08:07:04

标签: python-unittest python-decorators

我有一个单元测试案例,有两种不同的方法。如果第一种方法失败,我想要跳过我的第二种方法。

我正在使用装饰器@ 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()

1 个答案:

答案 0 :(得分:1)

在类声明时对

skipIf进行评估,现在知道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)