在pytest中,1个夹具可以构建在另一个夹具上吗?我有一个非常简单的夹具叫做#34;清洁剂"定义为......
import pytest
from mypackage import db
@pytest.fixture()
def cleaner(request):
def finalizer():
db.clear()
request.addfinalizer(finalizer)
然后在我的setup.cfg中,我有......
[pytest]
norecursedirs = .git venv
usefixtures = cleaner
这会导致数据库在每次测试后被截断。哪个好。但是现在我想要我制作的其他灯具也可以从清洁器中调出终结器。有没有办法定义另一个以某种方式扩展或称为更清洁的夹具?
答案 0 :(得分:13)
您必须声明您的其他灯具明确依赖于清洁剂:
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
使用py.test -s -v
运行此选项会产生:
test_foo.py@16::test_foo
"cleaner" fixture
"other" fixture
PASSED
"cleaner" finalized