在pytest中,1个夹具可以构建在另一个上吗?我有一个非常简单的夹具叫做"清洁剂",定义为......
import pytest
from mypackage import db
@pytest.fixture()
def cleaner(request):
def finalizer():
db.clear()
request.addfinalizer(finalizer)
Run Code Online (Sandbox Code Playgroud)
然后在我的setup.cfg中我...
[pytest]
norecursedirs = .git venv
usefixtures = cleaner
Run Code Online (Sandbox Code Playgroud)
这导致数据库在每次测试后被截断.哪个好.但是现在我想要我制作的其他灯具也可以从清洁器中调出终结器.有没有办法定义另一个以某种方式扩展或称为清洁的夹具?
Bru*_*ira 15
您必须声明您的其他灯具明确依赖于清洁剂:
import pytest
@pytest.fixture
def cleaner(request):
def finalizer():
print '\n"cleaner" finalized'
print '\n"cleaner" fixture'
request.addfinalizer(finalizer)
@pytest.fixture
def other(cleaner):
print '\n"other" fixture'
def test_foo(other):
pass
Run Code Online (Sandbox Code Playgroud)
运行此py.test -s -v产生:
test_foo.py@16::test_foo
"cleaner" fixture
"other" fixture
PASSED
"cleaner" finalized
Run Code Online (Sandbox Code Playgroud)