여러 테스트 케이스로 구성된 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 개의 플래그를 사용하는 것이 효율적이지 않기 때문에 더 효율적인 방법을 찾고 있습니다.
다음과 같은 것은 어떻습니까?
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] 삭제
몇 마디 만하겠습니다