2017-05-12 101 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的解決方案。 –

相關問題