簡體   English   中英

可以組合pytest裝置嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM