>백엔드 개발 >파이썬 튜토리얼 >Pytest 프레임워크의 기본 지식과 응용에 대한 자세한 설명

Pytest 프레임워크의 기본 지식과 응용에 대한 자세한 설명

王林
王林원래의
2024-01-13 13:36:18496검색

Pytest 프레임워크의 기본 지식과 응용에 대한 자세한 설명

Pytest 프레임워크의 기본 개념과 사용법에 대한 자세한 설명

1. 소개

Python의 인기와 다양한 테스트 프레임워크의 등장으로 소프트웨어 테스트는 개발 프로세스에서 없어서는 안 될 부분이 되었습니다. Pytest는 Python의 간단하면서도 강력한 테스트 프레임워크로, 테스트 코드를 작성하는 데 더 간결하고 사용하기 쉽고 확장 가능한 방법을 제공하도록 설계되었습니다. 이 기사에서는 Pytest 프레임워크의 기본 개념과 사용법은 물론 자세한 코드 예제를 소개합니다.

2. 설치 및 구성

먼저 Pytest 프레임워크를 설치해야 합니다. 다음 명령을 사용하여 설치를 완료합니다.

pip install pytest

설치가 완료되면 설치가 성공했는지 확인할 수 있습니다. 명령줄에 다음 명령을 입력합니다.

pytest --version

다음과 유사한 출력이 표시되면 Pytest가 성공적으로 설치된 것입니다.

이것은 ...에서 가져온 pytest 버전 x.x.x입니다.

Pytest 사용 이전에는 출력 형식, 테스트 디렉터리 등과 같은 몇 가지 일반적인 설정도 구성할 수 있었습니다. 프로젝트 루트 디렉토리에 pytest.ini라는 파일을 생성하고 다음 내용을 추가할 수 있습니다:

[pytest]
addopts = -s -v
testpaths = 테스트

그 중 addopts는 런타임 매개변수 옵션을 설정하는 데 사용됩니다. -s와 -v는 각각 자세한 로그와 결과를 출력하는 것을 나타내며, testpaths는 테스트 케이스의 디렉토리이다.

3. 테스트 케이스 작성

Pytest에는 테스트 케이스가 함수 형태로 존재합니다. test_로 시작하는 한 파일의 어느 곳에나 테스트 케이스 함수를 작성할 수 있습니다. 다음은 간단한 예입니다.

def test_add():
    assert add(2, 3) == 5

def test_multiply():
    assert multiply(2, 3) == 6

위 코드에서는 두 개의 테스트 함수 test_add 및 test_multiply를 각각 정의합니다. 각 함수에서 Assert 문은 우리가 기대하는 결과를 확인하는 데 사용됩니다. 어설션이 실패하면 Pytest는 AssertionError를 발생시키고 관련 오류 정보를 표시합니다.

4. 테스트 케이스 실행

Pytest는 테스트 케이스를 실행하는 다양한 방법을 제공합니다. 가장 간단한 방법은 명령줄에 다음 명령을 입력하는 것입니다.

pytest

명령줄은 프로젝트 디렉터리에 있는 모든 테스트 파일을 자동으로 찾아 해당 파일에서 테스트 기능을 실행합니다. 실행 결과에는 각 테스트 기능의 실행 결과와 전반적인 통계 정보가 표시됩니다.

pytest 명령을 사용하는 것 외에도 pytest.main()을 통해 테스트 사례를 실행할 수도 있습니다. run_tests.py라는 파일을 만들고 다음 콘텐츠를 추가할 수 있습니다.

import pytest

if __name__ == '__main__':
    pytest.main()

그런 다음 명령줄에서 다음 명령을 실행합니다.

python run_tests.py

이렇게 하면 동일한 효과를 얻을 수 있습니다.

5. 매개변수화된 테스트

Pytest는 매개변수화된 테스트라는 매우 유용한 기능을 제공합니다. 매개변수화된 테스트를 사용하면 테스트 데이터 세트를 테스트 함수에 전달하고 테스트를 여러 번 실행할 수 있습니다. 다음은 간단한 예입니다.

import pytest

@pytest.mark.parametrize('a,b,result', [(2, 3, 5), (4, 3, 7), (0, 0, 0)])
def test_add(a, b, result):
    assert add(a, b) == result

위 코드에서 @pytest.mark.parametrize 데코레이터는 테스트 데이터를 지정하는 데 사용됩니다. 매개변수화된 변수는 a, b, 결과 순으로 구성되며 각 테스트 데이터는 목록 형태로 전달된다. 그런 다음 이러한 매개변수를 테스트 기능에서 직접 사용할 수 있습니다.

매개변수화된 테스트를 실행할 때 Pytest는 각 테스트 데이터 세트에 대해 자동으로 테스트를 실행합니다. 테스트가 실패하면 실패한 특정 매개변수 값이 보고됩니다. 이런 방식으로 한 번에 여러 테스트 케이스를 작성함으로써 테스트 코드의 중복성을 크게 줄일 수 있습니다.

6. 테스트 픽스처

소프트웨어 테스팅에서는 테스트 환경을 초기화하고 테스트 데이터를 정리하기 위해 일부 테스트 픽스처를 만들어야 하는 경우가 많습니다. Pytest는 테스트 기능이 시작되고 종료되기 전과 후에 각각 실행하는 데 사용되는 설정 및 해제와 같은 일부 내장 픽스쳐를 제공합니다.

Fixture를 사용하려면 테스트 함수의 매개변수에 @pytest.fixture 데코레이터를 사용해야 합니다. 다음은 예입니다.

import pytest

@pytest.fixture
def setup():
    # 初始化测试环境
    ...

def test_demo(setup):
    # 测试函数
    ...

위 코드에서 픽스쳐 함수 설정은 @pytest.fixture 데코레이터를 사용하여 정의됩니다. 그런 다음 테스트 기능 매개변수에서 이 고정물을 사용하십시오.

Pytest는 tmpdir(임시 디렉터리), Monkeypatch, capfd(표준 출력 캡처) 등과 같은 다른 많은 픽스처도 제공합니다. 이러한 Fixture를 통해 다양한 테스트 케이스를 보다 편리하게 작성할 수 있습니다.

7. 확장 및 플러그인

Pytest 프레임워크는 테스트 프레임워크에 다양한 기능을 쉽게 추가할 수 있는 확장 및 플러그인 메커니즘도 지원합니다. 사용자 정의 보고서, 사용자 정의 명령줄 옵션 등과 같은 플러그인을 작성하여 Pytest의 기능을 확장할 수 있습니다.

8. 요약

이 글에서는 Pytest 프레임워크의 기본 개념과 사용법을 소개합니다. Pytest를 사용하면 테스트 코드 작성을 단순화하고 테스트 프로세스를 더욱 효율적이고 안정적으로 만들 수 있습니다. 동시에 Pytest에서 제공하는 매개변수화된 테스트 및 테스트 픽스처 기능을 사용하여 테스트 사례를 더 잘 구성 및 관리하고 테스트 범위와 품질을 향상시킬 수 있습니다. 이 글이 여러분이 Pytest 프레임워크를 이해하고 사용하는 데 도움이 되기를 바랍니다.

9. 참고 자료

  1. Pytest 문서: https://docs.pytest.org/en/latest/
  2. Martin Ohlsson의 Pytest 책

위 내용은 Pytest 프레임워크의 기본 지식과 응용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.