규도자 개발 블로그

파이썬 패키지를 독립적으로 테스트하는 방법 + 파이썬 패키지에 대한 기여를 하다. 본문

Python/Python

파이썬 패키지를 독립적으로 테스트하는 방법 + 파이썬 패키지에 대한 기여를 하다.

규도자 (gyudoza) 2019. 12. 6. 13:00

파이썬 패키지를 독립적으로 테스트하는 방법 + 파이썬 패키지에 대한 기여를 하다.

현재 작업하고 있는 사이트가 있는데 메인터넌스모드가 필요하여 만들까 하다가 혹시나 싶어 https://djangopackages.org/이곳을 뒤져봤는데 역시나 멋드러지게 만들어진 게 있었다. https://djangopackages.org/grids/g/maintenance-mode/ 여기에서 메인터넌스 모드에 대한 패키지들을 살펴볼 수 있는데 "DJANGO-MAINTENANCE-MODE"와 "DJANGO-MAINTENANCEMODE"라는 두 개의 패키지가 1, 2위를 두고 각축을 벌이고 있었는데 (놀랍게도 다른 패키지다) DJANGO-MAINTENANCE-MODE에 내가 별 하나를 더 추가해줘서 1위를 차지하게 됐다. 짝짝짝. 기능이 더 많아서 이걸 선택하기도 했고.

 

하지만 작업 도중 문제가 발생하였다. 패키지가 아직 큰 규모의 프로젝트도 아닐 뿐더러 모든 케이스에 대한 테스트가 안돼있었는지 내가 작업한 django 어플리케이션과 충돌이 나더라. 내 실수일까 싶어서 이런저런방법 모두 써봤지만 다 안됐고 결국 이슈에 등록해놨다. https://github.com/fabiocaccamo/django-maintenance-mode/issues/65에서 확인해볼 수 있는데 프로젝트 관리자인 Fabio Caccamo가 증상을 설명받고는 tests에 케이스를 추가해서 Pull Request를 해달라고 했는데... 내가 python package를 테스트하는 방법을 몰라 그냥 repo를 하나 만들고 거기에 내가 겪게 된 상황과 똑같은 코드를 만들어 Fabio에게 전달했다. 자세한 내용과 저장소 또한 저 이슈페이지에서 확인할 수 있다.

 

하지만 중요한 건 내가 몰라서 물어보니까 아래 테스팅이라는 란을 만들어준 부분에 있다. 심쿵... 괜히 아는 척 하고 싶어서 구글에 혼자 검색해봐서 해결해보려 했는데 안나오니 물어보는 수밖에 방법이 있나. 새로 추가해준 파이썬 패키지 테스트 방법은 아래와 같다.

# create python 3.7 virtual environment
virtualenv testing_django_maintanance_mode -p "python3.7" --no-site-packages

# activate virtualenv
cd testing_django_maintanance_mode && . bin/activate

# clone repo
git clone https://github.com/fabiocaccamo/django-maintenance-mode.git src && cd src

# run tests
python setup.py test

해당 방법을 각자의 운영환경이나 취향에 맞춰서 적당히 변경해서 쓰면 될 것 같다. 이 레포의 경우에는 테스트 케이스가 기본값(tests/tests.py)에 작성돼있으나 증상이나 분류에 따라 테스트 케이스를 따로따로 분리하고 싶으면 https://stackoverflow.com/questions/1896918/running-unittest-with-typical-test-directory-structure 이 방법을 쓰면 될 것이다.

 

나름 오픈소스 프로젝트에 버그도 찾고, 아무리 구글링을 해도 나오지 않는 파이썬 패키지 테스트 방법도 찾아서 기쁜 마음에 남겨본다.

Comments