2017-05-12 55 views
0

我有一个单元测试测试用两种不同的方法。如果第一个方法失败,我希望我的第二个方法可以跳过。如果另一个先前的测试方法在Python中使用unittest失败,如何跳过测试方法?

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

回答

0

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) 
+0

谢谢。我已经尝试了这两种方法,但我希望,还有一些更优雅的使用skipIf的解决方案。 –

相关问题