본문 바로가기
🎪 놀고있네/Python

[Python] Fixture 사용해보기

by 냥장판 2024. 5. 1.
반응형

 

Pytest 에는 테스트를 준비하는 데 사용되는 Fixture 라는 함수가 있음

여러 케이스에서 공통으로 사용할 수 있음

Fixture를 사용하면 테스트의 시작 전에 필요한 작업을 수행하고, 테스트가 완료된 후 정리 작업을 수행할 수 있음

예를 들어, 데이터베이스 연결, 웹 브라우저 열기, 파일 생성 및 삭제 등의 작업을 fixture로 정의하여 테스트 메서드에서 사용할 수 있음

pytest에서 fixture는 @pytest.fixture 데코레이터를 사용하여 정의됨

 

import pytest

@pytest.fixture
def sample_data():
    return [1, 2, 3, 4, 5]

def test_with_fixture(sample_data):
    assert sum(sample_data) == 15
    
def test_with_fixture2(sample_data):
    assert max(sample_data) == 4

 

위에 코드를 살펴보면 중복으로 sample data 를 작성할 필요 없이 수행이 가능하다

  • sample_data라는 fixture는 [1, 2, 3, 4, 5] 리스트를 반환
  • test_with_fixture 메서드가 sample_data 리스트를 활용

테스트 클래스를 작성할때

  1. 테스트 함수는 test_로 시작
  2. 테스트 클래스는 Test로 시작

테스트 함수나 클래스의 네이밍이 이에 맞지 않는 경우 pytest가 해당 파일을 인식하지 않을 수 있음

 

 

 

 

그럼 class 안에서 fixture를 사용할 때는 어떻게 해야할까

 

class 에서 fixture를 인자값으로 받아오려면 self 를 사용해야함

코드는 아래

import pytest

@pytest.fixture
def sample_data():
    return [1, 2, 3, 4, 5]

class Test_Class0:
    def test_with_fixture1(self, sample_data):
        assert sum(sample_data) == 15
        
    def test_with_fixture2(self, sample_data):
        assert max(sample_data) == 4

class Test_Case1:
    def test_with_fixture3(self, sample_data):
        assert 2 in sample_data
반응형

댓글