[英]Can pytest fixtures be combined?
在 pytest 中,一個裝置可以建立在另一個裝置上嗎? 我有一個非常簡單的固定裝置,稱為“清潔器”,定義為:
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
這導致每次測試后數據庫都被截斷,這很好。 但是現在我希望我制作的其他裝置也可以從清潔器中調用終結器。 有沒有辦法定義另一個以某種方式擴展或調用更清潔的裝置?
您必須明確聲明您的其他裝置依賴於清潔器:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.