PyTest를 사용한 Python 단위 테스트

AWS, Kubernetes, Python, JavaScript 등에 대한 콘텐츠를 작성합니다. 최신 콘텐츠를 모두 보려면 visit my blog 내 뉴스레터를 구독하십시오. .

This is Day 7 of the #100DaysOfPython challenge.



이 게시물은 Python 코드에서 단위 테스트를 실행하기 위한 PyTest 라이브러리의 기본 설정을 보여줍니다.

전제 조건


  • Pipenv . Pipenv에 대한 내 게시물은 here을 참조하십시오.
  • importing modules and __init__.py 친숙함

  • 시작하기


    hello-pytest 디렉토리를 생성하고 Pillow를 설치해 봅시다.

    # Make the `hello-pytest` directory
    $ mkdir hello-pytest
    $ cd hello-pytest
    
    # Init the virtual environment
    $ pipenv --three
    $ pipenv install --dev pytest
    
    # Create a folder to place files
    $ mkdir src tests
    # Create the required files
    $ touch src/math.py src/__init__.py tests/test_math.py tests/__init__.py
    


    이 단계에서 수학 함수를 추가할 준비가 되었습니다.

    도우미 수학 함수 추가



    우리의 예제는 매우 인위적이지만 함수를 가져오고 단위 테스트하는 방법을 보여주기 위해 add , subtractmultiply 함수를 만들 것입니다.
    src/math.py 내부에 다음 코드를 추가합니다.

    def add(x: int, y: int) -> int:
        """add two numbers together
    
        Args:
                        x (int): first number to add
                        y (int): second number to add
    
        Returns:
                        int: sum of x and y
        """
        return x + y
    
    
    def subtract(x: int, y: int) -> int:
        """subtract one number from another
    
        Args:
                        x (int): first number to subtract
                        y (int): second number to subtract
    
        Returns:
                        int: resut of x subtract y
        """
        return x - y
    
    
    def multiply(x: int, y: int) -> int:
        """multiply two numbers together
    
        Args:
                        x (int): first number in the multiplication
                        y (int): second number in the multiplication
    
        Returns:
                        int: product of x and y
        """
        return x * y
    


    위의 코드에는 수학 도우미에게 기대하는 대로 각각 수행하는 세 가지 기능이 포함되어 있습니다.

    이를 염두에 두고 수학 모듈의 테스트 파일에 코드를 추가해 보겠습니다.

    단위 테스트 작성


    tests/test_math.py 내부에 다음 코드를 추가합니다.

    from src.math import add, subtract, multiply
    
    
    def test_add():
        assert add(3, 2) == 5
    
    
    def test_subtract():
        assert subtract(3, 2) == 1
    
    
    def test_multiply():
        assert multiply(3, 2) == 6
    


    각 테스트는 예상대로 수행되며 간단한 수학에 대해 주장합니다. assert 함수는 결과가 참이면 통과하고 그렇지 않으면 실패합니다.

    이제 명령줄에서 pipenv run pytest를 실행하여 테스트를 실행할 수 있습니다.

    올바르게 완료되면 이제 다음이 표시됩니다.

    ============================================= test session starts =============================================
    platform darwin -- Python 3.9.6, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
    rootdir: /Users/dennisokeeffe/code/blog-projects/hello-pytest
    collected 3 items
    
    tests/test_math.py ...                                                                                  [100%]
    
    ============================================== 3 passed in 0.02s ==============================================
    


    테스트가 예상대로 작동하고 있어야 할 때 실패하도록 하려면 실패하도록 함수를 업데이트하고 실패하는지 테스트할 수 있습니다.
    add 대신 src/math.py 를 반환하도록 x + y + 1x + y 함수를 업데이트하면 함수가 실패하는지 테스트하고 실패에 대한 정보를 제공할 수 있습니다.

    ============================================= test session starts =============================================
    platform darwin -- Python 3.9.6, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
    rootdir: /Users/dennisokeeffe/code/blog-projects/hello-pytest
    collected 3 items
    
    tests/test_math.py F..                                                                                  [100%]
    
    ================================================== FAILURES ===================================================
    __________________________________________________ test_add ___________________________________________________
    
        def test_add():
    >       assert add(3, 2) == 5
    E       assert 6 == 5
    E        +  where 6 = add(3, 2)
    
    tests/test_math.py:5: AssertionError
    =========================================== short test summary info ===========================================
    FAILED tests/test_math.py::test_add - assert 6 == 5
    ========================================= 1 failed, 2 passed in 0.08s =========================================
    


    다시 변경하면 테스트를 다시 통과하고 PyTest로 첫 번째 테스트를 성공적으로 작성했습니다.

    요약



    오늘의 게시물은 PyTest를 사용하여 수학 모듈에 대한 단위 테스트를 작성하는 방법을 보여주었습니다.

    비록 고안되었지만 이 예제는 코드에 대한 단위 테스트를 작성하는 방법을 배우는 데 도움이 되었습니다.

    테스트에 대한 더 많은 예제를 읽고 싶다면 Pluralsight에 유쾌한repo이 있습니다. 이 문서를 읽고 테스트 방법을 확인할 수 있습니다.

    앞으로 몇 주 동안 더 복잡한 PyTest 사용법에 대해 글을 쓸 것입니다.

    리소스 및 추가 읽을거리


  • The ABCs of Pipenv
  • Pipenv
  • pluralsight/intro-to-pytest
  • What is __init__.py ?
  • PyTest

  • 사진 제공: rstone_design

    원래 내blog에 게시되었습니다. 새 게시물을 지체 없이 보려면 거기에 있는 게시물을 읽고 내 뉴스레터를 구독하십시오.

    좋은 웹페이지 즐겨찾기