2017-05-12 1 views
0

두 가지 방법으로 하나의 unittest 테스트 케이스가 있습니다. 첫 번째 방법이 실패하면 두 번째 방법을 건너 뛰고 싶습니다.파이썬에서 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() 

답변

0

skipIftest_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를 사용하는 좀 더 우아한 해결책이 있었으면합니다. –

관련 문제