[파이썬] pytest 플러그인 사용법

pytest는 파이썬 테스팅 프레임워크로 매우 다양한 기능을 제공합니다. pytest 플러그인은 pytest를 확장하고 테스트 작성을 더욱 쉽고 강력하게 할 수 있는 추가 기능입니다. 이 글에서는 pytest 플러그인의 사용법에 대해 알아보겠습니다.

플러그인 설치

pytest 플러그인을 사용하기 위해서는 먼저 해당 플러그인을 설치해야 합니다. pip 또는 conda를 사용하여 설치할 수 있습니다. 다음은 몇 가지 유용한 pytest 플러그인과 설치 명령어의 예입니다.

플러그인 사용

pytest 플러그인은 각각의 기능에 따라 사용 방법이 다를 수 있습니다. 보통은 pytest.ini 파일이나 pytest의 커맨드 라인 인수를 사용하여 플러그인을 활성화합니다. 다음은 pytest-html 플러그인을 사용하여 테스트 결과를 HTML로 출력하는 예입니다.

pytest --html=report.html

위 명령어를 실행하면 pytest는 테스트를 실행하고 결과를 report.html 파일로 저장합니다.

pytest-cov 플러그인을 사용하여 코드 커버리지를 계산하는 방법도 알아보겠습니다. pytest.ini 파일에 다음과 같이 설정하여 플러그인을 활성화할 수 있습니다.

[pytest]
addopts = --cov=my_module

위 설정은 pytest가 my_module이라는 모듈의 코드 커버리지를 계산하도록 지시합니다. 테스트를 실행하면 커버리지 결과를 출력하고, 테스트가 완료되면 커버리지 보고서도 생성됩니다.

커스텀 플러그인 작성

pytest 플러그인을 사용하여 자신만의 커스텀 플러그인을 작성할 수도 있습니다. pytest는 플러그인을 개발하기 위한 API와 훅을 제공하기 때문에 그리 어렵지 않게 작성할 수 있습니다.

예를 들어, 테스트 실행 시간을 측정하는 커스텀 플러그인을 작성해보겠습니다.

# my_plugin.py

import time

def pytest_configure(config):
    config.pluginmanager.register(ExecutionTimePlugin())

class ExecutionTimePlugin(object):
    def pytest_runtest_protocol(self, item, nextitem):
        start_time = time.time()
        yield
        end_time = time.time()
        execution_time = end_time - start_time
        item.add_report_section("execution-time", "Execution Time", f"{execution_time:.2f}s")

위 코드는 pytest의 pytest_runtest_protocol 훅을 사용하여 각 테스트의 실행 시간을 측정하는 플러그인을 작성한 예입니다. 해당 플러그인은 pytest_configure 함수를 사용하여 pytest에 등록됩니다. 테스트를 실행할 때마다 실행 시간을 측정하여 테스트 보고서에 추가합니다.

pytest 커맨드 라인에서 다음과 같이 해당 플러그인을 사용할 수 있습니다.

pytest --my-plugin

이와 같이 pytest 플러그인을 작성하면 테스트 작성과 실행을 더욱 효율적으로 관리하고 다양한 테스트 요구 사항을 간단하게 처리할 수 있습니다.

pytest 플러그인은 많은 다른 기능과 옵션을 제공하며, 공식 문서를 참조하여 자세한 내용을 살펴보시기 바랍니다.