Skip to main content

tiny yield fixture

Project description

https://travis-ci.org/podhmo/yieldfixture.svg?branch=master

how to use

from yieldfixture import create
run, yield_fixture = create()


@yield_fixture
def f():
    print(">>> f")
    yield 1
    print(">>> f")


@yield_fixture
def g():
    print("  >>> g")
    yield 2
    print("  >>> g")


@run
def use_it(x, y):
    print("{} + {} = {}".format(x, y, x + y))

output

>>> f
  >>> g
1 + 2 = 3
  >>> g
>>> f

with context

from yieldfixture import create, with_context
run, yield_fixture = create()


@yield_fixture
@with_context
def f(ctx):
    i = ctx["i"] = 0
    print("{}>>> f".format("  " * i))
    yield 1
    print("{}>>> f".format("  " * i))


@yield_fixture
@with_context
def g(ctx):
    i = ctx["i"] = ctx["i"] + 1
    print("{}>>> g".format("  " * i))
    yield 2
    print("{}>>> g".format("  " * i))


@run
def use_it(x, y, *, i=0):
    print("{}{} + {} = {}".format("  " * (i + 1), x, y, x + y))

output

>>> f
  >>> g
    1 + 2 = 3
  >>> g
>>> f

when a exception is raised

from yieldfixture import create, with_context
run, yield_fixture = create()


@yield_fixture
@with_context
def f(ctx):
    i = ctx["i"] = 0
    print("{}>>> f".format("  " * i))
    yield 1
    print("{}>>> f".format("  " * i))


@yield_fixture
@with_context
def g(ctx):
    i = ctx["i"] = ctx["i"] + 1
    print("{}>>> g".format("  " * i))
    yield 2
    print("{}>>> g".format("  " * i))


@run
def use_it(x, y, *, i=0):
    print("{}{} + {} = {}".format("  " * (i + 1), x, y, x + y))
    1 / 0

output

>>> f
  >>> g
    1 + 2 = 3
  >>> g
>>> f
Traceback (most recent call last):
  File "examples/02withexception.py", line 24, in <module>
    def use_it(x, y, *, i=0):
  File "$HOME/vboxshare/venvs/my3/yieldfixture/yieldfixture/__init__.py", line 125, in run_with
    return fn(*ctx.args, **ctx.kwargs)
  File "examples/02withexception.py", line 26, in use_it
    1 / 0
ZeroDivisionError: division by zero

selective fixture activation

from yieldfixture import create, with_context
run, yield_fixture = create()


@yield_fixture
@with_context
def f(ctx):
    i = ctx["i"] = ctx.get("i", -1) + 1
    print("{}>>> f".format("  " * i))
    yield 1
    print("{}>>> f".format("  " * i))


@yield_fixture
@with_context
def g(ctx):
    i = ctx["i"] = ctx.get("i", -1) + 1
    print("{}>>> g".format("  " * i))
    yield 2
    print("{}>>> g".format("  " * i))


@run
def use_it(x, y, *, i=0):
    print("{}{} + {} = {}".format("  " * (i + 1), x, y, x + y))


@run([g, f])
def use_it2(x, y, *, i=0):
    print("{}{} + {} = {}".format("  " * (i + 1), x, y, x + y))

output

>>> f
  >>> g
    1 + 2 = 3
  >>> g
>>> f
>>> g
  >>> f
    2 + 1 = 3
  >>> f
>>> g

0.3.2

  • only tuple treated as multiple values

0.3.1

  • dispatch hook

0.3.0

  • some internal refactoring(mainly, rename methods)

0.2.0

  • calling teardown action, absolutely

0.1.1

  • first release

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

yieldfixture-0.3.2.tar.gz (3.4 kB view details)

Uploaded Source

Built Distribution

yieldfixture-0.3.2-py2.py3-none-any.whl (4.9 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file yieldfixture-0.3.2.tar.gz.

File metadata

File hashes

Hashes for yieldfixture-0.3.2.tar.gz
Algorithm Hash digest
SHA256 8ddabe36c1f93c26a25d438efa2b26644446358bad3c00adf215c3a14d355dd9
MD5 ca4e5a7856fe7540e572e38379965dc4
BLAKE2b-256 2fe5118f3f164ba2ba38aa01aea7566feb2e712919dd39dc5df91d4e73531099

See more details on using hashes here.

File details

Details for the file yieldfixture-0.3.2-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for yieldfixture-0.3.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 38e7e669c7e3cb95e391e7910119979de58db9d3a29675d13556ce563f0eb693
MD5 2f0ef051d715129616dcbc6e6acd37af
BLAKE2b-256 e9bb8f0b70c5ee8e2cd4db5c882825bed0cd20a5ff4a7fa94fe0cdd432101d3a

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