Тестирование 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)
Другие вопросы по тегам