tiny yield fixture
Project description
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 hashes)
Built Distribution
Close
Hashes for yieldfixture-0.3.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38e7e669c7e3cb95e391e7910119979de58db9d3a29675d13556ce563f0eb693 |
|
MD5 | 2f0ef051d715129616dcbc6e6acd37af |
|
BLAKE2-256 | e9bb8f0b70c5ee8e2cd4db5c882825bed0cd20a5ff4a7fa94fe0cdd432101d3a |