pytest设备可以合并吗?

2024-05-14 19:00:37 发布

您现在位置:Python中文网/ 问答频道 /正文

pytest中的一个fixture可以建立在另一个之上吗?我有一个非常简单的装置叫做“清洁剂”,定义为。。。

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

这会导致每次测试后数据库被截断。太好了。但现在我想让我做的其他装置也从清洁者呼叫终结器。有没有办法定义另一个fixture,以某种方式扩展或调用cleaner?


Tags: fromimportdb定义pytestrequestdeffixture
1条回答
网友
1楼 · 发布于 2024-05-14 19:00:37

您必须声明您的其他fixture显式依赖于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

相关问题 更多 >

    热门问题