Visual Studio에서 테스트 탐색기를 사용하여 Python에 대한 유닛 테스트 작성

단위 테스트는 애플리케이션의 다른 코드 단위(일반적으로 격리된 함수, 클래스 등)를 테스트하는 코드 조각입니다. 응용 프로그램이 모든 유닛 테스트를 통과하면 최소한 하위 수준 프로그램 기능이 올바른 것으로 확신할 수 있습니다.

Python은 단위 테스트를 광범위하게 사용하여 프로그램을 설계하는 동안 시나리오를 검증합니다. Visual Studio의 Python 지원에는 테스트를 별도로 실행할 필요 없이 개발 프로세스 컨텍스트 내에서 단위 테스트 검색, 실행, 디버깅이 포함됩니다.

이 문서에서는 Visual Studio에서 Python을 사용하여 유닛 테스트를 수행하는 기능에 대해 간략히 설명합니다. 일반적인 단위 테스트에 대한 자세한 내용은 코드 단위 테스트를 참조하세요.

필수 조건

Mac용 Visual Studio는 지원되지 않습니다. 자세한 내용은 Mac용 Visual Studio 무슨 일이 일어나고 있는지?를 참조하세요. Windows, Mac 및 Linux의 Visual Studio Code는 사용 가능한 확장을 통해 Python에서 잘 작동합니다.

Python 프로젝트에 대한 테스트 프레임워크 선택

Visual Studio는 Python의 두 가지 테스트 프레임워크인 unittestpytest(Visual Studio 2019 버전 16.3 이상부터 제공)를 지원합니다. 기본적으로 Python 프로젝트를 만들 때 프레임워크는 선택되지 않습니다.

다음 단계에 따라 Python 프로젝트에 대한 테스트 프레임워크를 선택합니다.

  1. 솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

  2. 프로젝트 속성 창에서 테스트 탭을 선택하고 테스트 프레임워크 유형을 선택합니다.

    • unittest 프레임워크의 경우 Visual Studio가 프로젝트의 루트 디렉터리를 테스트 검색에 할당합니다. 기본값은 .(이)지만, 프로젝트 설정을 구성할 때 다른 위치를 지정할 수 있습니다. 테스트 파일 이름 패턴에 대해 하나 이상의 스트링을 지정할 수도 있습니다(예: test*.py, test_*.py).

    • pytest 프레임워크의 경우 테스트 위치 및 파일 이름 패턴과 같은 테스트 옵션이 표준 pytest .ini 구성 파일을 사용하여 지정됩니다. 기본값으로 작업 영역/프로젝트 폴더는 위치에 사용됩니다. 기본 파일 이름 패턴에는 test_*py*_test.py을(를) 포함합니다. 자세한 내용은 pytest 참조 설명서를 참조하세요.

    참고 항목

    파일 이름 패턴을 정의할 때 밑줄(_)과 같은 특수 문자는 와일드카드(*)와 일치하지 않습니다. 파일 이름에 특수 문자를 사용하려면 패턴 정의에서 이러한 문자를 지정합니다(예: test_*.py).

  3. 프레임워크 선택 및 설정을 저장하려면 Ctrl+S 바로 가기 키를 사용할 수 있습니다.

프레임워크를 구성한 후 Visual Studio는 테스트 검색을 시작하고 테스트 탐색기를 엽니다.

프로젝트 없이 Python 테스트 구성

Visual Studio를 사용하여 Python 코드가 포함된 폴더를 열어 프로젝트 없이 기존 Python 코드를 실행 및 테스트할 수 있습니다. 해당 시나리오에서 PythonSettings.json 파일을 사용하여 테스트를 구성해야 합니다.

  1. 로컬 폴더 열기 옵션을 사용하여 기존 Python 코드를 엽니다.

    Visual Studio 2022가 시작될 때 로컬 폴더 열기 옵션을 선택하는 방법을 보여 주는 스크린샷.

    Visual Studio가 시작될 때 로컬 폴더 열기 옵션을 선택하는 방법을 보여 주는 스크린샷.

  2. Python 폴더를 열면 Visual Studio는 프로그램과 관련된 설정을 관리하기 위해 여러 개의 숨겨진 폴더를 만듭니다. 이러한 폴더(및 솔루션 탐색기.git 폴더와 같은 기타 숨겨진 파일 및 폴더)를 보려면 모든 파일 표시 옵션을 선택합니다.

    Visual Studio 2022의 솔루션 탐색기 숨겨진 폴더 및 파일을 보는 방법을 보여 주는 스크린샷.

    Visual Studio에서 솔루션 탐색기 숨겨진 폴더 및 파일을 보는 방법을 보여 주는 스크린샷.

  3. 솔루션 탐색기에서 로컬 설정 폴더를 확장하고 PythonSettings.json 파일을 두 번 클릭하여 편집기에서 파일을 엽니다.

    참고 항목

    대부분의 구성에는 두 개의 설정 파일 PythonSettings.jsonProjectSettings.json이 표시됩니다. 이 연습에서는 PythonSettings.json 파일을 수정해야 합니다.

    Local Settings 폴더에서 PythonSettings.json 파일이 표시되지 않는 경우 수동으로 만듭니다.

    1. Local Settings 폴더를 마우스 오른쪽 단추로 클릭하고 추가>새 파일을 선택합니다.

    2. 파일 이름을 PythonSettings.json으로 지정하고 입력을 선택하여 변경 내용을 저장합니다.

    Visual Studio의 편집기에서 새로운 파일이 자동으로 열립니다.

  4. PythonSettings.json 파일에서 다음 코드를 추가하여 TestFramework을(를) 정의합니다. 원하는 테스트 프레임워크에 따라 프레임워크 값을 pytest 또는 unittest로 설정합니다.

    {
      "TestFramework": "unittest",
      "UnitTestRootDirectory": "testing",
      "UnitTestPattern": "test_*.py"
    }
    
    • unittest 프레임워크의 경우 PythonSettings.json 파일에서 UnitTestRootDirectoryUnitTestPattern 설정에 대한 특정 값을 정의하지 않으면 Visual Studio에서 이러한 필드를 각각 .test*.py의 기본값으로 자동으로 추가합니다.

    • pytest 프레임워크의 경우 구성 옵션은 항상 Visual Studio 설정이 아닌 pytest .ini 구성 파일에 지정됩니다.

  5. Python 프로그램에 테스트가 포함된 폴더와 별도로 src 폴더가 포함된 경우 PythonSettings.json 파일의 SearchPaths 설정을 사용하여 src 폴더의 경로를 지정합니다.

      "SearchPaths": [".\\src"]
    
  6. 변경 내용을 PythonSettings.json 파일에 저장합니다.

프레임워크를 구성한 후 Visual Studio는 지정된 프레임워크에 대한 테스트 검색을 시작합니다. 테스트 탐색기에서 테스트에 액세스할 수 있습니다.

테스트 추가 및 검색

기본적으로 Visual Studio는 이름이 test로 시작하는 메서드로 unittestpytest 테스트를 식별합니다.

Visual Studio에서 테스트 검색을 시작하는 방법을 확인하려면 다음 단계를 수행합니다.

  1. Visual Studio에서 Python 프로젝트를 엽니다.

  2. Python 프로젝트에 대한 테스트 프레임워크 선택에서 설명한 대로 프로젝트에 대한 테스트 프레임워크 속성을 설정합니다.

  3. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가>새 항목을 선택합니다.

    1. 새 항목 추가 대화 상자에서 Python 유닛 테스트 파일 형식을 선택합니다.

    2. 프로젝트 속성에 대해 지정한 패턴 정의를 충족하는 파일 이름을 입력합니다.

    3. 추가를 선택합니다.

  4. Visual Studio는 기본 코드를 사용하여 테스트 파일을 만듭니다.

    import unittest
    
    class Test_test1(unittest.TestCase):
        def test_A(self):
            self.fail("Not implemented")
    
    if __name__ == '__main__':
        unittest.main()
    

    이 코드는 표준 unittest 모듈을 가져오고 unittest.TestCase 메서드에서 테스트 클래스를 파생합니다. 스크립트를 직접 실행할 때 이 코드는 unittest.main() 함수도 호출합니다.

새 테스트 파일을 추가하면 Visual Studio에서 테스트 탐색기를 통해 사용할 수 있습니다.

테스트 탐색기를 사용하여 테스트 확인

테스트 프레임워크 및 테스트 파일을 구성한 후 Visual Studio는 테스트를 검색하여 테스트 탐색기에 표시합니다.

테스트 탐색기에서 작업할 수 있는 몇 가지 방법은 다음과 같습니다.

  • 테스트>테스트 탐색기를 선택하여 테스트 탐색기 창을 엽니다.

  • 테스트 탐색기 창이 열려 있는 경우 바로 가기 키 Ctrl+R, A를 사용하여 테스트 검색을 트리거합니다.

  • 테스트 탐색기에서 테스트를 두 번 클릭하여 편집기에서 해당 원본 파일을 엽니다.

    Visual Studio 2022에서 테스트 탐색기의 테스트에 대한 기본 보기를 보여 주는 스크린샷.

    테스트 탐색기에서 테스트에 대한 기본 보기를 보여 주는 스크린샷.

  • 툴바에서 Group By 옵션을 사용하여 테스트 보기를 구성합니다.

    Visual Studio 2022의 Group By 옵션을 사용하여 테스트 탐색기에서 테스트 보기를 구성하는 방법을 보여 주는 스크린샷

    Group By 옵션을 사용하여 테스트 탐색기에서 테스트 보기를 구성하는 방법을 보여 주는 스크린샷.

  • 검색 필드에 텍스트를 입력하여 이름별로 테스트를 필터링.

    검색 필드를 사용하여 테스트 탐색기에서 테스트 보기를 필터링하는 방법을 보여 주는 스크린샷.

    검색 필드를 사용하여 테스트 탐색기에서 테스트 보기를 필터링하는 방법을 보여 주는 스크린샷.

  • 다음 섹션에서 설명한 대로 테스트를 실행하고 테스트 실행에 대한 상태를 확인합니다.

unittest 모듈 및 테스트 작성에 관한 자세한 정보는 Python 설명서를 참조하세요.

테스트 탐색기를 사용하여 테스트 실행

테스트 탐색기에서 다양한 방법으로 테스트를 실행할 수 있습니다.

  • 필터 설정에 따라 현재 보기에 표시된 모든 테스트를 실행하려면 모두 실행(보기의 테스트)을 선택합니다.
  • 실행 메뉴는 실패한 테스트, 성공한 테스트 또는 실행하지 않은 테스트를 하나의 그룹으로 실행하는 명령을 사용합니다.
  • 하나 이상의 테스트를 선택하고 마우스 오른쪽 단추로 클릭한 후 선택한 테스트 실행 옵션을 선택합니다.

Visual Studio는 백그라운드에서 테스트를 실행합니다. 테스트 탐색기는 완료되면 각 테스트의 상태를 업데이트합니다.

  • 성공한 테스트에는 녹색 틱과 테스트 실행을 완료하는 데 소요된 시간이 표시됩니다.

    Visual Studio 2022에서 테스트 탐색기에서 성공한 테스트의 상태를 보여 주는 스크린샷.

    테스트 탐색기에서 성공한 테스트의 상태를 보여 주는 스크린샷.

  • 실패한 테스트에는 빨간색 X 표시와 콘솔 출력 및 테스트 실행의 unittest 출력을 보여 주는 출력 링크가 표시됩니다.

    Visual Studio 2022의 테스트 탐색기에서 실패한 테스트의 상태 및 이유 세부 정보를 보여 주는 스크린샷.

    테스트 탐색기에서 실패한 테스트의 상태를 보여 주는 스크린샷.

    테스트 탐색기에서 실패한 테스트의 이유를 보여 주는 스크린샷.

디버거를 사용하여 테스트 확인

유닛 테스트는 코드 조각이므로 다른 코드처럼 버그가 있을 수 있으며 경우에 따라 디버거에서 실행해야 합니다. Visual Studio 디버거에서 중단점을 설정하고 변수를 검사하며 코드를 단계별로 실행할 수 있습니다. Visual Studio는 단위 테스트에 대한 진단 도구도 제공합니다.

Visual Studio 디버거를 사용하여 테스트를 검사하는 방법에 대한 다음 사항을 검토합니다.

  • 테스트 디버깅은 기본값으로 Visual Studio 2019 버전 16.5 이상용 debugpy 디버거를 사용합니다. 일부 이전 버전의 Visual Studio에서는 ptvsd 4 디버거를 사용합니다. 이전 버전의 Visual Studio를 사용하고 ptvsd 3 디버거를 선호하는 경우 도구>옵션>Python>디버깅에서 레거시 디버거 사용 옵션을 선택합니다.

  • 디버깅을 시작하려면 코드에 초기 중단점을 설정하고 테스트 탐색기에서 테스트(또는 선택 항목)를 마우스 오른쪽 단추로 클릭한 다음, 선택한 테스트 디버그를 선택합니다. 애플리케이션 코드의 경우처럼 Visual Studio에서 Python 디버거를 시작합니다.

    Visual Studio 2022 디버거를 사용하여 유닛 테스트를 디버그하는 방법을 보여 주는 스크린샷.

    Visual Studio 디버거를 사용하여 유닛 테스트를 디버그하는 방법을 보여 주는 스크린샷.

  • 원하는 경우 선택한 테스트에 대한 코드 검사 분석을 사용할 수 있습니다. 자세한 내용은 코드 검사를 사용하여 테스트할 코드 범위 결정을 참조하세요.