규도자 개발 블로그
파이썬 패키지를 독립적으로 테스트하는 방법 + 파이썬 패키지에 대한 기여를 하다. 본문
파이썬 패키지를 독립적으로 테스트하는 방법 + 파이썬 패키지에 대한 기여를 하다.
현재 작업하고 있는 사이트가 있는데 메인터넌스모드가 필요하여 만들까 하다가 혹시나 싶어 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 이 방법을 쓰면 될 것이다.
나름 오픈소스 프로젝트에 버그도 찾고, 아무리 구글링을 해도 나오지 않는 파이썬 패키지 테스트 방법도 찾아서 기쁜 마음에 남겨본다.
'Python > Python' 카테고리의 다른 글
파이썬 변수 초기화의 정석 (0) | 2021.03.20 |
---|---|
파이썬3(python3)에서 문자열 자르는 함수. split()과 split(' ')의 차이. (0) | 2020.04.03 |
파이썬3.x[python3.x]에서 요소가 하나인 튜플을 문자열이 아닌 튜플로 인식시키기 (0) | 2019.07.04 |
파이썬(Python) 내장함수의 시간복잡도 (0) | 2019.04.29 |
윈도우(windows)에서 파이썬(python) 2.x버전과 3.x버전 동시에 쓰기 (0) | 2018.12.21 |