환경에 따라 mongo client 인스턴스를 만들어 사용하려고 함
테스트 코드 상에서 의존성 주입을 하려고 했는데 pytest는 테스트 클래스에 __init__
메서드를 만들 수 없었음. 다른 메서드에 def a(b: B):
이렇게 의존성 주입을 하려고 하니까 에러남.
결국 테스트 메서드에서 의존성 주입은 일단 포기함.
create_x_fixture로 픽스쳐 생성 시 전역 변수에 할당해주지 않고 쓰면 FixtureFunction
타입이기 때문에 function 이 반환됨. 전역 변수에 할당 후 테스트 메서드에 인수로 넘겨줘야 정상적으로 쓸 수 있음. get_mongo_client
메서드에 fixture 데코레이터를 달고 테스트 메서드 인수로 넘기면 안됨.
응답 인스턴스는 Database(MongoClient(host...
이런식으로 나와야 함
mongo_db.py
class MongoDB:
def __init__(self) -> None:
if os.environ.get("FLASK_ENV") == "test":
self.mongo_client = create_mongo_fixture(scope="session")
test_xx.py
from app.database.mongo import MongoDB
def get_mongo_client():
mongo_db = MongoDB()
_mongo_client = mongo_db.mongo_client
print(f'get_mongo_client {_mongo_client}')
return _mongo_client
_mongo_client = get_mongo_client()
def test_update_calculated_fee_table(app, _mongo_client):
some_class(mongo=_mongo_client)
assert 1==1