Skip to main content

A wrapper around the datastore emulator instance for use in tests.

Project description

dsemu

Description

dsemu is a simple library to help with testing GCP Datastore code written in Python. The provided Emulator class wraps the Datastore emulator and provides basic functionality such as starting/stopping and reseting the emulator instance from inside the test runner.

Requirements

You must have the gcloud tool installed and available in PATH.

Using existing instance of the emulator

If you're running tests that require datastore access frequently it might be better to keep an instance of the emulator running at all time instead of letting the wrapper start and stop it for the duration of the test run. If an instance of the emulator is running and the required environment variables are correctly set the Emulator wrapper will use the running instance instead of starting a new one and will not tear it down at the end of the test run.

Example usage with pytest

# conftest.py
import pytest
from dsemu import Emulator
from google.cloud import datastore


@pytest.fixture(scope="session")
def emulator():
    with Emulator() as emulator:
        yield emulator


@pytest.fixture(scope="session")
def session_client():
    client = datastore.Client(project="test")
    yield client


@pytest.fixture()
def client(emulator: Emulator, session_client: datastore.Client):
    emulator.reset()
    yield session_client
# datastore_test.py
from google.cloud import datastore


def test_datastore_put_and_get(client: datastore.Client):
    kind = "Task"
    name = "sampletask1"
    task_key = client.key(kind, name)
    task = datastore.Entity(key=task_key)
    task["description"] = "Buy milk"
    client.put(task)

    res = client.get(task_key)
    assert res == task

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dsemu-0.2.1.tar.gz (4.0 kB view details)

Uploaded Source

File details

Details for the file dsemu-0.2.1.tar.gz.

File metadata

  • Download URL: dsemu-0.2.1.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.0 requests/2.24.0 setuptools/50.3.1 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.8.6

File hashes

Hashes for dsemu-0.2.1.tar.gz
Algorithm Hash digest
SHA256 83600a83d14f49152b9024755c5eed2a3811f934ec5721f7ca887246101c44a6
MD5 ec5911f74da9d58667abbd1351dcc792
BLAKE2b-256 60da49685ab54b38680f0c325ec1ce13ea0a0d9bb0b1c159dac7f14ee7085541

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page