Как написать фикстуру, которая подменяет настоящую базу данных на тестовую?
вот мой файлик conftest.py:
from server.database import config
import pytest
@pytest.fixture(scope="session", autouse=True)
def fake_db():
# config.db = config.client.test_db
config.use_test()
yield
config.client.drop_database('test_db')
файлик test_user.py:
from server.tests.main import client
def test_create_user(fake_db):
response = client.post(url='api/users', json={'chat_id': 0, 'parameters': {'test': 'test'}})
assert response.status_code == 201
response = client.post(url='api/users', json={'chat_id': 0, 'parameters': {'test': 'test'}})
assert response.status_code == 400
файл database.py:
class LinkBD:
def __init__(self, client):
self.client = client
self.db = client.game_bot
def get_db(self):
return self.db
def use_test(self):
self.db = client.test_db
config = LinkBD(client=client)
db = config.get_db()
это импорты в файле user, отвечающим за crud:
from server.database import db
users = db.users
Я только учусь использовать pytest, поэтому не судите строго. Не могу разобраться, как мне сделать так, чтобы фикстура подменяла мою базу данных на тестовую. Импорты в файле user происходят раньше, поэтому скорее всего config.use_test() становится бесполезным..