지정된 테스트가 실패한 후 테스트 스위트 실행을 중지하도록 강제하는 방법은 무엇입니까?

마사 모르 타자 비

여러 테스트 케이스로 구성된 Selenium Webdriver / Python 2.7로 작성된 테스트 스위트가 있습니다. 일부 테스트 케이스는 매우 중요하므로 실패하면 전체 테스트가 실패하고 그 후에 테스트 케이스를 실행할 필요가 없습니다.

class TestSuite1(unittest.TestCase)
     def setUp(self):
         pass

     def test1(self):
         return True

     def test2(self):
         return false

     def test3(self):
         return True

     # This is a critical test
     def test4(self):
         return false

     def test5(self):
         return True

     def tearDown(self):
         pass

따라서 test4가 실패하면 전체 테스트 실행을 중지하고 싶습니다 (test2가 실패하면 테스트 실행이 계속되어야 함). 데코레이터를 사용할 수 있다는 것을 알고 있지만 테스트 실행에 약 20 개의 중요한 테스트가 있고 모든 테스트 케이스에 대해 20 개의 플래그를 사용하는 것이 효율적이지 않기 때문에 더 효율적인 방법을 찾고 있습니다.

Jedwards

다음과 같은 것은 어떻습니까?

import unittest

class CustomResult(unittest.TestResult):
    def addFailure(self, test, err):
        critical = ['test4', 'test7']
        if test._testMethodName in critical:
            print("Critical Failure!")
            self.stop()
        unittest.TestResult.addFailure(self, test, err)


class TestSuite1(unittest.TestCase):
    def setUp(self):
        pass

    def test1(self):
        return True

    def test2(self):
        return False

    def test3(self):
        return True

    # This is a critical test
    def test4(self):
        self.fail()
        pass

    def test5(self):
        print("test5")
        return True

    def tearDown(self):
        pass


if __name__ == '__main__':
    runner = unittest.runner.TextTestRunner(resultclass=CustomResult)
    unittest.main(testRunner=runner)

테스트를 호출하는 방법에 따라이를 조정해야 할 수도 있습니다.

경우 self.fail()(의 test4주석), 5 개 방법을 시험한다. 그러나 주석 처리되지 않은 경우 테스트는 "Critical Failure!"를 인쇄합니다. 그리고 중지합니다. 제 경우에는 4 개의 테스트 만 실행되었습니다.

또한 사전 순으로 정렬 할 때 우선 순위를 지정하여 심각한 오류가 발생하더라도 다른 방법을 테스트하는 데 시간을 낭비하지 않도록 이러한 메서드의 이름을 지정하는 것이 현명 할 수 있습니다.

출력 (사용 self.fail()) :

중대한 실패! 
0.001s 

FAILED 에서 4 개의 테스트 실행 (실패 = 1)

출력 (제외 self.fail()) :

test5 0.001 초에 
5 번 테스트 실행 

OK

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관