Тестирование mongodb с использованием mings mim (монго в памяти)
Я хочу протестировать свои новые созданные модели в ming, но мне не очень удавалось делать макет, что я пропустил.
Модель
from ming import Field, schema
from ming.declarative import Document
bind = create_datastore('test')
session = Session(bind)
class Post(Document):
class __mongometa__:
session = session
name = 'blog'
_id = Field(schema.ObjectId)
title = Field(str)
text = Field(str)
comments = Field([str])
Тест
from www.tests.files import intial_post
from www.models import Post
from www.views import post_view
from ming import create_datastore
import pytest
@pytest.fixture()
def no_requests(monkeypatch):
bind = create_datastore('mim://localhost:27017/test')
monkeypatch.setattr("www.model.bind", bind)
def test_blog_view(no_requests):
Post(intial_post).m.insert()
post_view() == Post().m.find_one()
Тесты проходят, но данные поступают не из памяти, а из mongodb на диске, поэтому monkeypatch не меняет соединение. Я чувствую, что я рядом, но в то же время понятия не имею, чтобы это произошло.
Заранее спасибо.
1 ответ
Чтобы решить эту проблему, нам просто нужно исправить ming.Session с новым хранилищем данных, которое подключено к памяти.
from ming import create_datastore
from ming import Session
def no_requests(monkeypatch):
memory_datastore = create_datastore('mim://localhost:27017', database='test')
monkeypatch.setattr(Session, 'db', memory_database.db)