PyTest를 사용한 Python 단위 테스트
11226 단어 pythonpytest100daysofpythonbeginners
This is Day 7 of the #100DaysOfPython challenge.
이 게시물은 Python 코드에서 단위 테스트를 실행하기 위한 PyTest 라이브러리의 기본 설정을 보여줍니다.
전제 조건
__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
, subtract
및 multiply
함수를 만들 것입니다.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 + 1
의 x + 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 사용법에 대해 글을 쓸 것입니다.
리소스 및 추가 읽을거리
__init__.py
? 사진 제공: rstone_design
원래 내blog에 게시되었습니다. 새 게시물을 지체 없이 보려면 거기에 있는 게시물을 읽고 내 뉴스레터를 구독하십시오.
Reference
이 문제에 관하여(PyTest를 사용한 Python 단위 테스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/okeeffed/python-unit-testing-with-pytest-13co텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)