티스토리 뷰

파이썬 unittest 단위 테스트 프레임워크는 클래스와 모듈에서 테스트 스위트를 만드는 데 사용되는 TestLoader 클래스가 있다. 기본적으로 unittest.defaultTestLoader 인스턴스는 unittest.main() 메서드가 호출될 때 자동으로 생성된다. 그러나 명시적 테스트 인스턴스를 사용하면 특정 속성을 사용자 정의할 수 있다. 

 

 

 

# 예제로 사용할 테스트 케이스 정의하기

import unittest


class TestCase1(unittest.TestCase):
    def test_testcase1_1(self):
        print("test_testcase1_1")
        self.assertTrue(True)

    def test_testcase1_2(self):
        print("test_testcase1_2")
        self.assertTrue(True)


class TestCase2(unittest.TestCase):
    def test_testcase2_1(self):
        print("test_testcase2_1")
        self.assertTrue(True)

    def test_testcase2_2(self):
        print("test_testcase2_2")
        self.assertTrue(True)

 

 

 

# 테스트 케이스 클래스를 테스트하는 방법 - .loadTestFormTestCase()

다음 코드는 TestLoader의 loadTestFormTestCase()를 사용하여 테스트 케이스 클래스를 테스트하는 예제이다.

test_case_list = [TestCase1, TestCase2]
testLoad = unittest.TestLoader()

test_list = []
for test_case in test_case_list:
    testSuite = testLoad.loadTestsFromTestCase(test_case)
    test_list.append(testSuite)

newSuite = unittest.TestSuite(test_list)
runner = unittest.TextTestRunner()
runner.run(newSuite)

 

 

 

# 모듈을 테스트하는 방법 - .loadTestsFromModule()

다음 코드는 TestLoader의 loadTestsFromModule()를 사용하여 모듈에 있는 테스트 케이스를 테스트하는 예제이다. 테스트 케이스가 들어있는 모듈은 test_unittest이다. 그리고 아래 코드는 test_unittest가 아닌 다른 파이썬 파일이 된다.

import unittest
import test_unittest

test_loader = unittest.TestLoader()
suit = test_loader.loadTestsFromModule(test_unittest)

runner = unittest.TextTestRunner()
runner.run(suit)
test_testcase1_1
.test_testcase1_2
.test_testcase2_1
.test_testcase2_2
.
----------------------------------------------------------------------
Ran 4 tests in 0.000s

OK

 

 

 

# 이름으로 테스트하는 방법 - loadTestsFromName()

다음은 .loadTestFromName()을 사용하여 이름으로 테스트를 한다. 이름은 모듈, 테스트 케이스 클래스, 테스트 메서드가 될 수 있다. 

 

## 모듈 이름으로 테스트하기

테스트할 모듈 이름은 str 타입으로 전달하면 된다.

import unittest

test_loader = unittest.TestLoader()
suit = test_loader.loadTestsFromName("test_unittest")

runner = unittest.TextTestRunner()
runner.run(suit)

 

## 테스트 케이스 이름으로 테스트하기

테스트 케이스 이름을 전달할 때는 모듈의 이름도 포함되어야 한다.

suit = test_loader.loadTestsFromName("test_unittest.TestCase1")

 

## 테스트 메서드 이름으로 테스트하기

테스트 메서드 이름을 전달할 때는 모듈의 이름과 테스트 케이스 이름도 포함되어야 한다.

suit = test_loader.loadTestsFromName("test_unittest.TestCase1.test_testcase1_1")

 

 

 

 

# 여러 이름으로 테스트하기 - loadTestsFromNames()

loadTestsFromNames는 loadTestsFromName과 사용방법이 비슷하지만, 여러 이름을 리스트로 전달할 수 있다.

import unittest

test_loader = unittest.TestLoader()
suit = test_loader.loadTestsFromNames(
    ["test_unittest.TestCase1.test_testcase1_1", "test_unittest.TestCase2"]
)

runner = unittest.TextTestRunner()
runner.run(suit)
댓글
공지사항