Define pytest fixtures as context managers.
Project description
pytest-contextfixture makes it possible to define pytest fixtures as context managers.
A contextfixture works like a standard fixture, but it allows the definition to be written as a generator. This simplifies the teardown code and allows for other context managers to be used within a fixture.
Installation
pip install pytest-contextfixture
Usage
Consider this example, using the standard 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'
With pytest.contextfixture, this is equivalent:
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'
While this is a slightly nicer syntax, when using other context managers to get a dependency for a fixture, this becomes more useful:
@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 will then run in the context of setup_something and setup_something_else.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for pytest-contextfixture-0.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 99cf533453fe7d68039afbce48d5a7ddaaa12117a6e0c15228a165da60f34b17 |
|
MD5 | 4d364e3eb2b7db42efeaeeec1afdcbc4 |
|
BLAKE2b-256 | 36a0ebf7f7f29baa293865dfca60834a5d566c511daf7c9e2d5fd83095ec3a28 |