Reputation: 16335
Say I have a file fixtures.py
that defines a simple py.test
fixture called foobar
.
Normally I would have to import that fixture to use it (including all of the sub-fixtures), like this:
from fixtures import foobar
def test_bazinga(foobar):
Note that I also don't want to use a star import.
How do I import this fixture so that I can just write:
import fixtures
def test_bazinga(foobar):
Is this even possible? It seems like it, because py.test
itself defines exactly such fixtures (e.g. monkeypatch
).
Upvotes: 29
Views: 25937
Reputation: 11969
Fixtures and their visibility are a bit odd in pytest. They don't require importing, but if you defined them in a test_*.py
file, they'll only be available in that file.
You can however put them in a (project- or subfolder-wide) conftest.py to use them in multiple files.
pytest-internal fixtures are simply defined in a core plugin, and thus available everywhere. In fact, a conftest.py
is basically nothing else than a per-directory plugin.
You can also run py.test --fixtures
to see where fixtures are coming from.
Upvotes: 54