티스토리 뷰
반응형
파이썬 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)
반응형
'Python > unittest' 카테고리의 다른 글
파이썬 unittest - 반복문에서 부분 테스트(subtest) 사용하기 (0) | 2023.02.19 |
---|---|
파이썬 unittest - 테스트 결과 (0) | 2023.02.19 |
파이썬 unittest - 테스트 건너뛰기 (0) | 2023.02.18 |
파이썬 unittest - 테스트 함수를 unittest로 실행하기 (0) | 2023.02.18 |
파이썬 unittest - 테스트 스위트(test suite) (0) | 2023.02.18 |
댓글
공지사항