티스토리 뷰

파이썬 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)
댓글
공지사항