python 테스트!
단위테스트 - pytest
pytest 패키지를 통해 단위 테스트 진행이 가능
$ pip install pytest
아래 코드와 같이 여러가지 데커레이터로 테스트의 상세한 설정이 가능하다.
# test_py.py
import pytest
try:
import mylib
except ImportError:
mylib = None
# skip 지정
@pytest.mark.skip("Do not run this")
def test_false():
assert False
# skip 조건
@pytest.mark.skipif(conditions=mylib is None, reason='mylib is None, Do not run this')
def test_mylib():
assert mylib.foobar() == 42
# 마킹을 통한 테스트 특정
@pytest.mark.kouzie
def test_true():
assert True
def test_false_only():
assert False
# -v 상세 출력
pytest -v test_py.py
# -n 병렬처리
pytest -v -n 4 test_py.py
# -k 특정 테스트 이름 지정
pytest -v test-py.py -k test_true
# -m 마킹 으로 테스트 특정
pytest -v test-py.py -m kouzie
# not, and, or 키워드로 지정 가능
pytest -v test-py.py -m "not kouzie"
fixture
테스트 전후로 실행하는 공통 명령어 집합을 관리하기 위한 패키지
def test_user():
print(os.getenv("USER"))
assert os.getenv("USER") == "foobar"
# scope 지정으로 한 모듈안에서 db conn 이 살아있도록 설정
@pytest.fixture(scope="module", autouse=True)
def change_user_env():
curuser = os.environ.get("USER")
print(curuser)
os.environ["USER"] = "foobar"
yield
os.environ["USER"] = curuser