[Python] pytest.fixture()

짱구석·2021년 1월 3일
0
post-thumbnail
post-custom-banner

pytest를 사용해서 테스트를 하다보면 fixture 대한 이해가 중요다.

unittest의 setUp처럼 테스트 실행 DB 등록같이 전처리가 필요할 때 사용한다.

특히 @pytest.fixture(scope=??) scope에 따라 실행되는 범위가 다르기 때문에
직접 실행하면서 이해해보자

@pytest.fixture()

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 함수에서 실행된다.

@pytest.fixture(scope='module')

# 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가 파일 단위로 실행됨을 알 수 있다.

post-custom-banner

0개의 댓글