UnitTest 프레임 워크-테스트 건너 뛰기
Python 2.7부터 테스트 건너 뛰기에 대한 지원이 추가되었습니다. 개별 테스트 방법 또는 TestCase 클래스를 조건부로 또는 무조건적으로 건너 뛸 수 있습니다. 프레임 워크를 사용하면 특정 테스트를 '예상 실패'로 표시 할 수 있습니다. 이 테스트는 '실패'하지만 TestResult에서 실패한 것으로 간주되지 않습니다.
무조건 메소드를 건너 뛰려면 다음 unittest.skip () 클래스 메소드를 사용할 수 있습니다.
import unittest
def add(x,y):
return x+y
class SimpleTest(unittest.TestCase):
@unittest.skip("demonstrating skipping")
def testadd1(self):
self.assertEquals(add(4,5),9)
if __name__ == '__main__':
unittest.main()
skip ()은 클래스 메소드이므로 @ token이 접두어로 붙습니다. 이 메서드는 건너 뛰는 이유를 설명하는 로그 메시지라는 하나의 인수를 사용합니다.
위의 스크립트가 실행되면 다음과 같은 결과가 콘솔에 표시됩니다.
C:\Python27>python skiptest.py
s
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK (skipped = 1)
문자 's'는 테스트를 건너 뛰었 음을 나타냅니다.
테스트 건너 뛰기의 대체 구문은 테스트 함수 내에서 인스턴스 메서드 skipTest ()를 사용하는 것입니다.
def testadd2(self):
self.skipTest("another method for skipping")
self.assertTrue(add(4 + 5) == 10)
다음 데코레이터는 테스트 건너 뛰기 및 예상 실패를 구현합니다.
S. 아니. | 방법 및 설명 |
---|---|
1 | unittest.skip(reason) 무조건 장식 된 테스트를 건너 뜁니다. 이유 는 테스트를 건너 뛰는 이유 를 설명해야합니다. |
2 | unittest.skipIf(condition, reason) 조건이 참이면 데코 레이팅 된 테스트를 건너 뜁니다. |
삼 | unittest.skipUnless(condition, reason) 조건이 참이 아니면 데코 레이팅 된 테스트를 건너 뜁니다. |
4 | unittest.expectedFailure() 테스트를 예상 된 실패로 표시하십시오. 실행시 테스트가 실패하면 테스트는 실패로 간주되지 않습니다. |
다음 예제는 조건부 건너 뛰기 및 예상 실패의 사용을 보여줍니다.
import unittest
class suiteTest(unittest.TestCase):
a = 50
b = 40
def testadd(self):
"""Add"""
result = self.a+self.b
self.assertEqual(result,100)
@unittest.skipIf(a>b, "Skip over this routine")
def testsub(self):
"""sub"""
result = self.a-self.b
self.assertTrue(result == -10)
@unittest.skipUnless(b == 0, "Skip over this routine")
def testdiv(self):
"""div"""
result = self.a/self.b
self.assertTrue(result == 1)
@unittest.expectedFailure
def testmul(self):
"""mul"""
result = self.a*self.b
self.assertEqual(result == 0)
if __name__ == '__main__':
unittest.main()
위의 예에서 testsub () 및 testdiv ()는 건너 뜁니다. 첫 번째 경우 a> b가 참이고 두 번째 경우 b == 0은 참이 아닙니다. 반면 testmul ()은 예상 실패로 표시되었습니다.
위의 스크립트가 실행되면 두 개의 건너 뛴 테스트가 's'를 표시하고 예상 실패는 'x'로 표시됩니다.
C:\Python27>python skiptest.py
Fsxs
================================================================
FAIL: testadd (__main__.suiteTest)
Add
----------------------------------------------------------------------
Traceback (most recent call last):
File "skiptest.py", line 9, in testadd
self.assertEqual(result,100)
AssertionError: 90 != 100
----------------------------------------------------------------------
Ran 4 tests in 0.000s
FAILED (failures = 1, skipped = 2, expected failures = 1)