Usage

During testing, you may want to mock a certain dataset (or other Evaluatable) to known value. This can be done using the labrea_test.Mock context manager, which ensures that at the end of the block, any mocking is torn down.

import labrea_test
from labrea import dataset


@dataset
def foo() -> str:
    return "foo"


def test_foo():
    with labrea_test.Mock() as mock:
        mock(foo, "bar")
        assert foo() == "bar"

    assert foo() == "foo"

Mock can be used to mock any Evaluatable object, and can take a plain value or another Evaluatable object as the value to mock to.

import labrea_test
from labrea import dataset


@dataset
def foo() -> str:
    return "foo"


@dataset
def bar() -> str:
    return "bar"


def test_foo():
    with labrea_test.Mock() as mock:
        mock(foo, bar)
        assert foo() == "bar"

    assert foo() == "foo"