Используя pytest и mongoengine, данные создаются в основной базе данных, а не в тестовой
Я установил эти пакеты:
python -m pip install pytest pytest-django
И создал фиксатор:
# core/services/tests/fixtures/checkout.py
import pytest
from bson import ObjectId
from datetime import datetime
from core.models.src.checkout import Checkout
@pytest.fixture(scope="session")
def checkout(mongo_db):
checkout = Checkout(
user_id=59,
amount=35_641,
)
checkout.save()
return checkout
и импортировал его в conftest.py
в том же каталоге:
# core/service/tests/conftest.py
from core.service.tests.fixtures.checkout import *
Вот как я подключаюсь к тестовой базе данных:
# conftest.py
import pytest
from mongoengine import connect, disconnect, connection
@pytest.fixture(scope="session", autouse=True)
def mongo_db():
connect(
db="db",
name="testdb",
alias="test_db",
host="mongodb://localhost:27017/",
serverSelectionTimeoutMS=5000,
)
connection._connections.clear()
yield
disconnect()
А это мой настоящий тест:
import json
import pytest
from core.service.checkout import a_function
def test_a_function(checkout):
assert checkout.value is False
response = a_function(id=checkout.id, value=True)
assert response.status_code == 200
response_data = json.loads(response.content.decode("UTF-8"))
assert response_data.get("success", None) is True
checkout.reload()
assert checkout.value is True
Но каждый раз, когда я запускаю pytest
, в основной базе данных создается новая запись. Как я могу это исправить, чтобы использовать тестовую базу данных?