[파이썬] argparse 인수의 단위 테스트 작성

Argparse는 Python 표준 라이브러리 중 하나로, 명령행 인수를 구문 분석하고 처리하는 데 사용됩니다. 이것은 개발자가 쉽게 명령행 인수를 처리하고 프로그램을 더 유연하게 만들어주는 강력한 도구입니다. 그러나 argparse를 사용할 때마다 매번 수동으로 구문 분석을 테스트하는 것은 번거로운 일일 수 있습니다.

이 블로그 게시물에서는 Python의 단위 테스트 프레임워크인 unittest를 사용하여 argparse의 인수를 테스트하는 방법에 대해 알아보겠습니다.

1. unittest 모듈 가져오기

unittest 모듈은 Python에 내장되어 있는 표준 라이브러리이므로 별도의 설치가 필요하지 않습니다. 우리는 단위 테스트를 작성하기 위해 이 모듈을 가져와야 합니다. 아래와 같이 코드를 작성하세요:

import unittest
import argparse

2. 테스트 케이스 클래스 작성

unittest 모듈은 unittest.TestCase 클래스를 기반으로 하는 테스트 케이스 클래스를 작성할 수 있도록 해줍니다. 각각의 테스트 메소드는 테스트를 수행하고 결과를 확인합니다. 우리는 테스트를 진행하기 위해 새로운 테스트 케이스 클래스를 작성해야 합니다. 아래와 같이 코드를 작성하세요:

class ArgparseTestCase(unittest.TestCase):
    def test_argument_parsing(self):
        # 테스트할 인수를 포함한 인수 파서 생성
        parser = argparse.ArgumentParser()
        parser.add_argument("--name", help="이름을 입력하세요.")
        parser.add_argument("--age", help="나이를 입력하세요.")
        # 인수 문자열을 파싱
        args = parser.parse_args(["--name", "John", "--age", "30"])
        # 인수 값 확인
        self.assertEqual(args.name, "John")
        self.assertEqual(args.age, "30")

위 코드에서 test_argument_parsing 메소드는 테스트를 진행하고 결과를 확인하는 역할을 합니다. 이 메소드에는 argparse를 테스트하기 위한 적절한 인수를 포함한 인수 파서를 생성합니다. 다음으로, 인수 문자열을 파싱하고 파싱된 인수 값과 예상한 값(John30)을 비교하여 확인합니다.

3. 테스트 실행하기

이제 우리는 단위 테스트를 실행하고 결과를 확인할 준비가 되었습니다. 아래와 같이 코드를 작성하세요:

if __name__ == "__main__":
    unittest.main()

위 코드는 스크립트가 직접 실행될 때만 단위 테스트를 실행하도록 하는 역할을 합니다. 이제 터미널에서 스크립트를 실행하면 unittest 모듈이 단위 테스트를 실행하고 결과를 출력합니다.

4. 테스트 수행 및 결과 확인

터미널에서 다음 명령어를 실행하여 테스트를 수행할 수 있습니다:

python test_argparse.py

실행 결과는 아래와 같을 것입니다:

.
----------------------------------------------------------------------
Ran 1 test in 0.001s

OK

테스트가 성공적으로 통과되었음을 나타내는 ., 그리고 전체 테스트 수와 소요된 시간이 표시됩니다.

인수의 단위 테스트를 작성함으로써 우리는 argparse를 정확하게 사용하고 여러 인수 조합에 대해 예상한 결과를 얻을 수 있습니다. 이를 통해 우리의 코드를 보다 견고하고 안정적으로 유지할 수 있습니다.