将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的上下文中运行。