티스토리 뷰

파이썬의 unittest 단위 프레임 워크는 테스트 스위트(test suite)를 제공한다. 보통 테스트 케이스를 실행하면, 해당 테스트 케이스의 모든 테스트 메서드를 실행한다. 하지만 테스트 스위트는 테스트하려는 기능에 따라 원하는 테스트들을 모아서 실행할 수 있게 된다.

 

테스트 스위트는 다음과 같은 항목을 같이 묶을 수 있다.

  • 테스트 메서드
  • 테스트 스위트
  • 테스트 케이스

 

 

 

# 테스트 스위트에서 사용할 테스트 케이스

테스트 스위트에 사용할 테스트 케이스는 다음과 같다.

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)

 

 

 

# 테스트 스위트에 테스트 메서드 추가하기

테스트 스위트는 unittest.TestSuite 클래스를 이용한다. 테스트할 테스트 메서드를 TestSuite를 생성 시 인자로 전달할 수도 있고, .addTest()나 .addTests()를 사용해서 추가할 수도 있다.

 

다음은 TestSuite를 생성 시 TestCase1의 test_testcase1_1() 테스트 메서드와 TestCase2의 test_testcase2_1() 메서드 메서드를 전달하는 예제이다.

suite = unittest.TestSuite(
    [TestCase1("test_testcase1_1"), TestCase2("test_testcase2_1")]
)

runner = unittest.TextTestRunner()
runner.run(suite)
test_testcase1_1
.test_testcase2_1
.
----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK

 

위의 코드를 .addTest()로 사용하면 다음과 같다.

suite = unittest.TestSuite()
suite.addTest(TestCase1("test_testcase1_1"))
suite.addTest(TestCase2("test_testcase2_1"))

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

 

.addTests()로 사용하면 다음과 같다.

suite = unittest.TestSuite()
suite.addTests([TestCase1("test_testcase1_1"), TestCase2("test_testcase2_1")])

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

 

 

 

# 테스트 스위트에 테스트 케이스 추가하기

테스트 스위트에 테스트 케이스를 추가하려면 unittest.makeSuite()로 테스트 스위트를 만들 수 있다. 

suite = unittest.makeSuite(TestCase1)

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

 

 

 

# 테스트 스위트에 테스트 스위트를 추가하기

테스트 스위트에 테스트 스위트를 추가하는 것은 테스트 메서드를 추가하듯이 하면 된다.

suite1 = unittest.TestSuite(
    [TestCase1("test_testcase1_1"), TestCase2("test_testcase2_1")]
)

suite = unittest.TestSuite([TestCase1("test_testcase1_2")])
suite.addTest(suite1)

runner = unittest.TextTestRunner()
runner.run(suite)
test_testcase1_2
.test_testcase1_1
.test_testcase2_1
.
----------------------------------------------------------------------
Ran 3 tests in 0.000s

OK
댓글
공지사항