将pytest fixtures定义为上下文管理器。
项目描述
pytest-contextfixture使您能够将pytest fixtures定义为上下文管理器。
上下文fixture的工作方式类似于标准fixture,但它允许将定义编写为生成器。这简化了拆解代码,并允许在fixture中使用其他上下文管理器。
安装
pip安装pytest-contextfixture
用法
考虑以下示例,使用标准的pytest.fixture
import pytest
@pytest.fixture
def dependency(request)
def teardown():
# fixture teardown code goes here
request.addfinalizer(teardown)
return 1234
def test_foo(dependency):
assert fn_under_test(dependency) == 'expected'
使用pytest.contextfixture,这相当于
import pytest
@pytest.contextfixture
def dependency(request):
# fixture setup code goes here
yield 1234
# fixture teardown code goes here
def test_foo(dependency):
assert fn_under_test(dependency) == 'expected'
虽然这是一种稍微更好的语法,但在使用其他上下文管理器获取fixture的依赖项时,这变得更有用
@pytest_contextfixture
def dependency(request):
with setup_something():
with setup_something_else() as d:
yield d
def test_foo(dependency):
assert fn_under_test(dependency) == 'expected'
test_foo将在setup_something和setup_something_else的上下文中运行。