머신러닝과 기술적 분석

pytest 사용법 정리 본문

python

pytest 사용법 정리

BetterToday 2017. 8. 16. 23:22
728x90

python 에서 자주 사용하는 test-framework 에는 unitest, nose, pytest 가 있다.

이들 중에서 pytest 가 가장 사용하기도 간편하고 디버깅 메세지도 친절한 것 같다. Good Integration Practices 를 참조해서 pytest 사용방법에 대해서 정리해 보자.

1. Conventions for Python test discovery

아래와 같은 규칙으로 테스트를 수행한다.

  • start point 로부터 recursive 하게 모든 디렉토리를 test 한다.
  • (테스트할 디렉토리에서) test_*.py , *_test.py 로 naming 되어있는 모든 file 을 Test 한다.
  • (테스트할 파일에서) Test prefix가 붙어있는 class와 test_ prefix가 붙어있는 함수를 Test 한다.

위 규약에 맞는 함수, class를 찾아서 모두 test한다.

2. Package 와 Test Directory 의 구성

2.1. Main Package 의 밖에 Test 디렉토리를 위치시키는 구성

setup.py   # your setuptools Python package metadata
mypkg/
    __init__.py
    appmodule.py
tests/
    test_app.py

2.2. Main Package 의 안에 Test 디렉토리를 위치시키는 구성

setup.py   # your setuptools Python package metadata
mypkg/
    __init__.py
    appmodule.py
    ...
    test/
        test_app.py
        ...

3. main-package 를 editable mode 로 install 한다.

  • Project Directory의 루트에서 아래의 명령을 실행한다.
    pip install -e .

  • Editable Mode 로 설치하면 Main Package 밖에 있는 Test Code 에서 Main-Package 를 import 할 수 있다.

    • Editable Mode 가 아닌 일반적인 package 로 설치할 경우 Test Code 에서 dist_packages 에 있는 module 을 참조하게 된다. 이렇게 하면 소스수정 -> package 를 설치(dist-packages 를 update) -> test 수행 해야만 수정된 소스를 Test 할 수 있다.
    • Editable Mode 일 경우에는 소스수정 -> test 수행 이 가능하다.
  • 주의사항
    • setup.py 가 있어야 한다.
    • 동일 package 가 dist_packages 에 설치되어있다면 깨끗하게 지우고 editable mode 로 Install 하자.
728x90
반응형
Comments