만들어진 python server를 실행하면 DB에 연결하도록 만들어놓았는데,
테스트 코드는 어플리케이션의 코드와는 별도로 실행되기 때문에 DB 연결 또한 별도로 만들어줘야한다.
DB 뿐만 아니라 대부분의 초기화 작업을 따로 해줘야한다.
당연히 이 때 연결되는 DB는 실제 사용할 어플리케이션 DB와는 다른 DB를 연결해야겠지?
pytest에서는 fixture
를 이용해서 테스트 실행 전후에 자동으로 DB에 connect, close 할 수 있다.
pytest에서 테스트 설정을 정의할 때는 conftest.py
를 사용함.
test 디렉토리 최상단에 conftest.py
를 만들어주자.
# test/conftest.py
import pytest
from app.dbmodule import Mongodb
@pytest.fixture(scope="module", autouse=True)
def connect_mongodb():
db = Mongodb()
db.connect()
yield
db.close()
이러게 하면 테스트가 실행되면서 db에 연결되고 테스트가 완료된 뒤 연결이 해제된다.
autouse
를 True
로 했기 때문에 해당 fixture는 모든 테스트에서 자동으로 사용된다.