Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Q objects
- combinations
- AWS
- SQL
- Bruteforce
- pytest
- Stack
- 백준
- HTTP 완벽 가이드
- algorithm
- utils
- was
- stateful
- permutations
- ORM
- ws
- Unit Testing
- Django
- dictionary
- Python
- TDD
- Gunicorn
- codecov
- greedy
- stateless
- Programmers
- stack&que
- postreSQL
- Git
- Query
Archives
- Today
- Total
해피 코딩!
pytest를 사용하는 이유 본문
틀리다고 생각하시는 부분을 지적해주세요! 피드백을 환영합니다!
적용 프로젝트
pytest를 사용하는 이유
# 장고 기본 테스트코드 동작
./manage.py test
# pytest 설치
pip install pytest, pytest-djagno
내장되어있는 장고 기본 테스트는 프로덕션에 있는 데이터베이스와는 별개의
클린한 디비를 생성해낸다.
sqlite는 별 다른 의미가 없지만
postgres, mysql은 동작속도가 더 빠른 대신 초기 세팅이 더 오래걸린다.
디비 생성이 더 오래걸린다는 뜻
단순한 데이터베이스를 생성하는 시간이 아닌, postgres 프로그램을 새로 키는 수준의 자원이 소요된다.
매번 이런 시간을 소요하긴 어렵다.
그래서 pytest가 사용된다.
django 랑 pytest를 사용하게 되면 더 빠른 테스트코드 작성이 가능하다.
Coverage
테스트코드를 실행했을 때, 전체 소스 코드중 몇 %가 실행되었는지를 확인할 수 있다.
테스트코드의 실행 결과를 파일로 만들어준다. (.coverage)
이 프로그램이 완벽한가를 나타내는 기준이 아닌, 이 프로그램이 테스트코드를 작성했고, 전체 소스 코드에서 어느정도의 영역을 동작시켰는지 확인할 수 있는 모듈이다.
100%니까 완벽한 라이브러리가 아닌, 테스트코드를 얼마나 잘 짯는지가 더 중요하다.
coverage 실행
coverage run --source'.' app/manage.py test
orcoverage run --source'app' app/manage.py test
- 이렇게 하면 테스트코드를 읽지 않는다. 왜인지 문서를 읽어보았지만 찾지 못하였습니다.
coverage run app/manage.py test <app_name>
하면 해당 테스트 코드를 읽음.coverage report -m
결과 보기
굳이 볼 필요가 없는 코드들이 있다.
/root/.coveragerc
생성 매칭 파일은ini
# coveragerc 예시이며 문서에서 제공합니다.
# 프로젝트 구조 PROJECT/app/conifg/settings.py
[run]
source =
app
omit =
app/manage.py
app/config/asgi.py
app/config/wsgi.py
app/*/migrations/*
app/*/migrations/*
[report]
exclude_lines =
def __str__
def __repr__
if settings.DEBUG
return super()
raise AssertionError
codecov
codecov.io에 테스트 리포트를 쉽게 업로드 할 수 있도록 도와주는 라이브러리
pytest-cov
pytest를 사용해서 codecov.io 에 업로드 할 리포트를 만들어주는 라이브러리
# 프로젝트 구조 PROJECT/app/conifg/settings.py
pip install codecov pytest-cov
pytest --cov app
# git repo Settings/ Secrets/ new_secret
CODEDOV_TOKEN=<codecov.io Token> codecov
'Django' 카테고리의 다른 글
Django form 정리 (0) | 2021.01.14 |
---|---|
Django의 쿼리와 데이터베이스 레이어 (4) | 2020.12.18 |
Django를 사용하게 된 이유 (0) | 2020.12.15 |
Django 구성에 대한 이해 (0) | 2020.11.23 |
WS, WAS - Nginx, uWSGI (0) | 2020.11.23 |
Comments