This project is a pure python implementation of the Google Cloud Datastore RPC Spec. This allows projects using the python-ndb lirary to write unit tests without needing to depend on/manage the full datastore emulator. It is intended as a replacement for the legacy App Engine runtime's local datastore testbed.
InMemoryCloudDatatoreStub
can be installed from PyPi:
$ pip install InMemoryCloudDatastoreStub
The stub can be inserted into your unit tests as a pytest fixture using monkeypatch:
from unittest.mock import MagicMock
import pytest
from google.cloud.ndb import _datastore_api
from InMemoryCloudDatastoreStub.datastore_stub import LocalDatastoreStub
@pytest.fixture()
def ndb_stub(monkeypatch):
stub = LocalDatastoreStub()
monkeypatch.setattr(_datastore_api, "stub", MagicMock(return_value=stub))
return stub
Unit tests, typechecks, and lints can all be run with tox
:
# Run everything
$ tox
# Run unit tests
$ tox -e py
# Run lint check
$ tox -e lint
# Run type check
$ tox -e typecheck