티스토리 뷰
반응형
파이썬 unittest 단위 테스트 프레임워크는 테스트를 건너뛸 수 있는 기능을 제공한다.
# 테스트를 건너뛰는 방법
unittest는 다양한 방법으로 테스트를 건너뛰게 만들 수 있다.
- skip 데코레이터 사용하기
- skipTest 호출하기
- 사용자 정의 건너뛰기 데코레이터를 만들어 사용하기
# skip 데코레이터 사용하기
unittest는 테스트를 건너뛰기 위해 다양한 skip 데코레이터를 제공한다.
- @unittest.skip(resaon) : 조건 없이 데코레이트된 테스트를 건너뛴다.
- @unittest.skipIf(condition, resaon) : 조건이 참이면, 데코레이트된 테스트를 건너뛴다.
- @unittest.skipUnless(condition, reason) : 조건이 참이 아니면, 데코레이트된 테스트를 건너뛴다.
- @unittest.expectedFailure : 테스트가 실패하거나 오류가 있는 경우, 테스트 성공으로 간주한다.
import unittest
import sys
class MyTestCase(unittest.TestCase):
@unittest.skip("unittest.skip")
def test_skip(self):
self.fail("test_skip")
@unittest.skipIf(0 < 1, "unittest.skipIf")
def test_skipIf(self):
print("test_skipIf")
@unittest.skipUnless(0 > 1, "unittest.skipUnless")
def test_skipUnless(self):
print("test_skipUnless")
@unittest.expectedFailure
def test_fail(self):
print("start test_fail")
self.assertEqual(1, 0, "self.assertEqual(1, 0)")
print("end test_fail")
if __name__ == "__main__":
unittest.main(verbosity=2)
test_fail (__main__.MyTestCase) ... start test_fail
expected failure
test_skip (__main__.MyTestCase) ... skipped 'unittest.skip'
test_skipIf (__main__.MyTestCase) ... skipped 'unittest.skipIf'
test_skipUnless (__main__.MyTestCase) ... skipped 'unittest.skipUnless'
----------------------------------------------------------------------
Ran 4 tests in 0.000s
테스트 케이스 전부를 건너뛸 수 있다.
@unittest.skip("showing class skipping")
class MySkippedTestCase(unittest.TestCase):
def test_not_run(self):
pass
# skipTest 호출하기
setUp()과 테스트 메서드 내부에서 TestCase.skipTest()를 호출하면 해당 테스트를 건너뛴다.
class MyTestCase(unittest.TestCase):
def test_maybe_skipped(self):
if not external_resource_available():
self.skipTest("external resource not available")
# test code that depends on the external resource
pass
# 사용자 정의 건너뛰기 데코레이터를 만들어 사용하기
unittest.skip()을 사용하면 사용자 정의 건너뛰기 데코레이터를 만들 수 있다.
다음은 unittest.skip(reason) 데코레이터를 클론한 데코레이터라고 볼 수 있다.
import unittest
def skip(func):
return unittest.skip(func.__name__)(func)
class TestCase(unittest.TestCase):
@skip
def test_method1(self):
print("test_method1")
def test_method2(self):
print("test_method2")
if __name__ == "__main__":
unittest.main(verbosity=2)
test_method1 (__main__.TestCase) ... skipped 'test_method1'
test_method2 (__main__.TestCase) ... test_method2
ok
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK (skipped=1)
반응형
'Python > unittest' 카테고리의 다른 글
파이썬 unittest - 테스트 결과 (0) | 2023.02.19 |
---|---|
파이썬 unittest - 테스트 로더 클래스 (0) | 2023.02.18 |
파이썬 unittest - 테스트 함수를 unittest로 실행하기 (0) | 2023.02.18 |
파이썬 unittest - 테스트 스위트(test suite) (0) | 2023.02.18 |
파이썬 unittest - 테스트 케이스와 텍스트 픽스처 (0) | 2023.02.18 |
댓글
공지사항