Django를 시작하면서 파이썬 테스트코드 라이브러리를 찾아봤었다. 파이썬에서는 unittest와 pytest가 많이 사용되는 편이였다
Ruby On Rails의 Rspec 같은 BDD + Unit Test 라이브러리를 찾아봤는데, 마음에드는 라이브러리를 찾지 못했다. ( 예를 들면, mamba라는 라이브러리가 있었는데, 대중적이지 않아 보여서 믿음직하지 않았다 )
Unittest와 Pytest 간단 소개
이 둘은 테스트코드를 함수단위로 작성하는 Unit Test 툴이다.
unnitest는 파이썬 표준 라이브러리에 포함된 라이브러리다.
pytest는 2007년에 첫 커밋되었고, 계속 활발하게 커밋되고 있는 라이브러리다. 그리고 unitest로 작성된 테스트코드와 호환된다.
But. pytest 전용으로 작성된 테스트코드는 unittest에서 돌릴 수 없다.
그래서 둘중 뭘쓸까?
왜 Unittest보다 Pytest를 쓰는게 더 나을까?
파이콘 2017 ) 이썬에서 편하게 테스트 케이스 작성하기: pytest, Travis CI, Docker 자료를 보면 좀 쉽게 이해된다.
( 이 글은, 파이콘 자료를 참고했습니다 :) )
pytest와 unittest의 대략적인 느낌!
1. unittest는 보일러플레이트코드가 많은 편이다.
클래스를 작성할 때마다 unittest.TestCase 클래스를 상속받아야한다거나,
assert 비교문도 assertEqual() 함수를 써줘야한다거나.
2. pytest는 fixture를 별도의 함수로 분리해서 관리하고, 필요한 테스트 케이스에서만 호출해서 사용할 수 있다.
fixture를 모듈화, 재가공, 재사용 등이 쉽다!
3. pytest가 테스트코드 결과도 좀더 상세하게 보여준다.
아무튼... 상세한 내용은 파이썬에서 편하게 테스트 케이스 작성하기: pytest, Travis CI, 그리고 도커를 참고하면 된다.
그래서~~
난 pytest를 쓰기로 했다.
Django 테스트코드 작성 참고 자료!
django에서 pytest를 작성하기 동영상 - The Django TDD Cookbook
django에서 사용할만한 테스트코드 라이브러리 아이디어 - 브런치 ) 코드커버리지 80% 넘긴 썰
FactoryBoy로 테스트 목데이터 만들기 - Mocking database calls in Django view tests
실제 pytest 테스트 코드 샘플 참고하기 - https://github.com/FlowFX/sturdy-potato
'소프트웨어-이야기 > 테스트-자동화' 카테고리의 다른 글
유닛테스트를 작성하는 3가지 접근방법 - Test First VS Test Last VS Test Driven (0) | 2018.11.24 |
---|---|
(Pytest) mongoengine + factoryboy 조합으로 사용할 때, 데이터 리셋시키기 (2) | 2018.09.25 |
[pytest] PyCharm 기본 테스트 라이브러리를 pytest으로 변경하기 (0) | 2018.07.29 |
[pytest] 함수의 매개변수로 기대한 값이 전달되었는지 확인하는 테스트코드 작성하기 (0) | 2018.07.14 |
(Django) Rspec VS PyTest (0) | 2018.06.15 |