pytest
를 사용해서 테스트를 하다보면 fixture
대한 이해가 중요다.
unittest의 setUp처럼 테스트 실행 DB 등록같이 전처리가 필요할 때 사용한다.
특히 @pytest.fixture(scope=??)
scope에 따라 실행되는 범위가 다르기 때문에
직접 실행하면서 이해해보자
import pytest
@pytest.fixture(scope='function')
def fixture():
print('\nTest_1 Fixture!!')
def test_a(fixture):
print('\ntest_a')
def test_b(fixture):
print('\ntest_b')
def test_c(fixture):
print('\ntest_c')
# in test_2.py
from test_1 import fixture
def test_2_a(fixture):
print('\ntest_a')
def test_2_d(fixture):
print('\ntest_b')
def test_2_c(fixture):
print('\ntest_c')
아무 scope=function일 때는 모든 test 함수에서 실행된다.
# in test_1.py
import pytest
@pytest.fixture(scope='module')
def fixture():
print('\nTest_1 Fixture!!')
def test_a(fixture):
print('\ntest_a')
def test_b(fixture):
print('\ntest_b')
def test_c(fixture):
print('\ntest_c')
# in test_2.py
from test_1 import fixture
def test_2_a(fixture):
print('\ntest_a')
def test_2_d(fixture):
print('\ntest_b')
def test_2_c(fixture):
print('\ntest_c')
다음과 같이 파일을 하나 더생성한뒤 fixture함수를 import 하였다.
scope를 module로 하면 fixture가 파일 단위로 실행됨을 알 수 있다.