微屈服夹具
yieldfixture的Python项目详细描述
如何使用
fromyieldfixtureimportcreaterun,yield_fixture=create()@yield_fixturedeff():print(">>> f")yield1print(">>> f")@yield_fixturedefg():print(" >>> g")yield2print(" >>> g")@rundefuse_it(x,y):print("{} + {} = {}".format(x,y,x+y))
输出
>>> f >>> g 1 + 2 = 3 >>> g >>> f
上下文
fromyieldfixtureimportcreate,with_contextrun,yield_fixture=create()@yield_fixture@with_contextdeff(ctx):i=ctx["i"]=0print("{}>>> f".format(" "*i))yield1print("{}>>> f".format(" "*i))@yield_fixture@with_contextdefg(ctx):i=ctx["i"]=ctx["i"]+1print("{}>>> g".format(" "*i))yield2print("{}>>> g".format(" "*i))@rundefuse_it(x,y,*,i=0):print("{}{} + {} = {}".format(" "*(i+1),x,y,x+y))
输出
>>> f >>> g 1 + 2 = 3 >>> g >>> f
当引发异常时
fromyieldfixtureimportcreate,with_contextrun,yield_fixture=create()@yield_fixture@with_contextdeff(ctx):i=ctx["i"]=0print("{}>>> f".format(" "*i))yield1print("{}>>> f".format(" "*i))@yield_fixture@with_contextdefg(ctx):i=ctx["i"]=ctx["i"]+1print("{}>>> g".format(" "*i))yield2print("{}>>> g".format(" "*i))@rundefuse_it(x,y,*,i=0):print("{}{} + {} = {}".format(" "*(i+1),x,y,x+y))1/0
输出
>>> 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
选择性夹具激活
fromyieldfixtureimportcreate,with_contextrun,yield_fixture=create()@yield_fixture@with_contextdeff(ctx):i=ctx["i"]=ctx.get("i",-1)+1print("{}>>> f".format(" "*i))yield1print("{}>>> f".format(" "*i))@yield_fixture@with_contextdefg(ctx):i=ctx["i"]=ctx.get("i",-1)+1print("{}>>> g".format(" "*i))yield2print("{}>>> g".format(" "*i))@rundefuse_it(x,y,*,i=0):print("{}{} + {} = {}".format(" "*(i+1),x,y,x+y))@run([g,f])defuse_it2(x,y,*,i=0):print("{}{} + {} = {}".format(" "*(i+1),x,y,x+y))
输出
>>> f >>> g 1 + 2 = 3 >>> g >>> f >>> g >>> f 2 + 1 = 3 >>> f >>> g
0.3.2
- 只有元组被视为多个值
0.3.1
- 调度挂钩
0.3.0
- 一些内部重构(主要是重命名方法)
0.2.0
- 绝对要进行拆卸操作
0.1.1
- 首次发布