unnittest
모듈은 표준 라이브러리(Standard library)로 파이썬 설치시 기본적으로 설치됨pytest
는 추가로 설치해야 하는 모듈pip install pytest
# 예시 함수
def average(a):
return sum(a) / len(a)
test_mymath.py
를 프로젝트에 추가# 테스트 코드
from mymath import *
def test_average():
assert average([1, 2, 3]) == 2
pytest
를 입력-v
옵션을 사용pytest -v
test_
라는 접두사(Prefix)로 시작하는 파일 또는 _test
라는 접미사(Suffix)로 끝나는 파일을 찾아서 테스트 코드를 실행하고 그 결과를 화면에 출력Tip! 여러가지 실행 방법
- 특정 테스트 파일만 실행
pytest [파일명]
- 예시 :
pytest test.py
- 테스트 모음의 서브셋 실행
- 테스트명의 부분 문자열 일치로 테스트 실행하기
pytest -k [테스트명]
- 예시 :
pytest -k bye
- 테스트명에
bye
가 들어갔다면pytest -k bye
로 실행시킬 수 있음- 마커 기반으로 묶인 테스트 실행하기
- 테스트 함수에 마크 데코레이터를 사용
@pytest.mark.[마커명]
- 예시
@pytest.mark.bye test_bye(): assert True
test -m [마커명]
- 예시 :
test -m bye
fixture
란 테스팅을 하는데 있어서 필요한 부분들을 혹은 조건들을 미리 준비 해놓은 리소스 혹은 코드들fixture
라고 볼 수 있음fixture
는 적용된 각 테스트 함수 직전에 실행되는 함수fixture
를 붙이면 fixture
는 실행되고 데이터를 반환할 것@pytest.fixture
fixture
이름을 인자에 넣어서 사용할 수 있음import pytest
@pytest.fixture
def something():
return 'bye'
@pytest.mark.bye
def test_say_something(something):
assert something == 'bye'
fixture
를 넣으면 다른 테스트 파일에서 쓸 수가 없음conftest.py
에 작성해야 함Tip!
conftest.py
fixture
함수들을 이 파일에 작성하면 여러 테스트 파일들에서 접근 가능
conftest.py
파일을 생성하고fixture
들을 작성- 여러 테스트 파일에서
fixture
이름을 인자로 넣어주면 사용 가능test
는 동일 파일 내에서fixture
를 찾고 없으면conftest
에서 찾아서fixture
실행
@pytest.mark.parameterize("[변수명]", [(n, m)])
import pytest
@pytest.mark.parametrize("n, result", [(1, 2), (2, 4)])
def test_parameterize(n, result):
assert n * 2 == result
pytest --maxfail = [N번]
pytest.ini
안에 아래와 같이 작성[pytest]
addopts=--maxfail=[N번]
pip install pytest-xdist
pytest -n [CPU 수 지정]
pytest.ini
안에 아래와 같이 작성[pytest]
addopts = -n[CPU 수 지정]