[파이썬] pytest의 확장과 플러그인

pytest는 Python으로 작성된 테스트 프레임워크로서, 많은 개발자들에게 애용되고 있습니다. pytest만으로도 충분히 강력한 기능을 제공하지만, 확장과 플러그인을 통해 더욱 유용한 기능들을 추가할 수 있습니다. 이번 글에서는 pytest의 확장과 플러그인에 대해 알아보겠습니다.

확장

pytest는 넓은 사용자 커뮤니티를 가지고 있으며, 이를 통해 다양한 확장 기능을 활용할 수 있습니다. pytest 확장은 테스트 코드 작성 및 실행, 결과 보고 등 다양한 측면에서 향상된 기능을 제공합니다.

예시: pytest-html

pytest-html은 pytest의 확장 기능 중 하나입니다. 이 확장은 테스트 실행 결과를 HTML로 보고서를 생성해주는 기능을 제공합니다. 이를 통해 테스트 결과를 시각적으로 확인하고 공유할 수 있습니다. 다음은 pytest-html의 설치 및 사용 예제입니다.

$ pip install pytest-html
# test_sample.py
import pytest

def test_addition():
    assert 1 + 2 == 3

def test_subtraction():
    assert 5 - 2 == 3

테스트 코드 실행 후에는 다음과 같이 HTML 보고서를 생성할 수 있습니다.

$ pytest --html=report.html

예시: pytest-cov

pytest-cov는 pytest의 확장으로서, 코드 커버리지를 측정하는 기능을 제공합니다. 이를 통해 테스트가 얼마나 코드를 커버하고 있는지를 확인할 수 있습니다. 다음은 pytest-cov의 설치 및 사용 예제입니다.

$ pip install pytest-cov
# test_sample.py
import pytest

def test_addition():
    assert 1 + 2 == 3

def test_subtraction():
    assert 5 - 2 == 3

테스트 코드 실행 후에는 다음과 같이 코드 커버리지를 확인할 수 있습니다.

$ pytest --cov=.

플러그인

pytest는 플러그인 아키텍처를 지원하므로, 커스텀 플러그인을 개발하여 pytest의 기능을 더욱 확장할 수 있습니다. pytest 플러그인을 개발하여 프로젝트에 맞는 유용한 기능을 추가할 수 있습니다.

예시: pytest-random-order

pytest-random-order는 pytest의 플러그인으로서, 테스트 케이스 실행 순서를 무작위로 설정해주는 기능을 제공합니다. 이를 통해 테스트 실행의 예측 가능성을 줄이고, 테스트의 독립성을 보장할 수 있습니다. 다음은 pytest-random-order의 설치 및 사용 예제입니다.

$ pip install pytest-random-order
# test_sample.py
import pytest

@pytest.mark.run_order(order=pytest.Order.RANDOM)
def test_addition():
    assert 1 + 2 == 3

@pytest.mark.run_order(order=pytest.Order.RANDOM)
def test_subtraction():
    assert 5 - 2 == 3

위와 같이 @pytest.mark.run_order 데코레이터를 사용하여 실행 순서를 무작위로 설정할 수 있습니다.

결론

pytest의 확장과 플러그인을 통해 다양한 유용한 기능을 추가할 수 있습니다. pytest-html, pytest-cov, pytest-random-order 외에도 다른 확장 및 플러그인들이 존재하므로, 프로젝트에 맞게 선택하여 사용하면 됩니다. pytest의 확장과 플러그인은 테스트 작성 및 실행의 편의성과 효율성을 높여주므로, 앞으로의 개발 작업에 적극적으로 활용해보세요.