-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Description
What's the problem this feature will solve?
I am the author of next-actions/pytest-mh which is a multihost testing plugin for pytest. We are doing some black magic to dynamically create test fixtures and map them to some custom objects. Some user-focused details are described here but TLDR we are doing this:
@pytest.fixture
def pytest_fixture():
pass
def test_example(client, ldap, pytest_fixture):
passIn this scenario, client and ldap are passed to the test_example by setting it in item.funcargs in runtest hook to internal objects created per-tests. pytest_fixture is standard pytest fixture. This works nicely and it is using only public fields (I'm not sure if funcargs is documented, but at the very least it is not prefix with _).
However, accessing these data from pytest fixture fails, obviously:
@pytest.fixture
def pytest_fixture(client):
pass
def test_example(client, ldap, pytest_fixture):
pass... because client is not a registered fixture. I probably could manage that by accessing pytest private stuff, but I'd like to avoid that.
I would like to be able to create and delete fixture (at least function-scoped) inside hooks.
Describe the solution you'd like
Provide API to dynamically register and unregister fixtures from pytest hooks.
Alternative Solutions
Currently, deep and private pytest objects and attributes are required.