Hi folks,

while writing tests on a new project using pytest-2.3 i noticed again an
inconvience: fixtures such as tmpdir or monkeypatch could implementation-wise
easily support being called from non-function scoped fixtures.  But
currently if you do::

    @pytest.fixture(scope="module")
    def something(monkeypatch):
        ...

you get a ScopeMismatchError because the function-scoped monkeypatch
fixture cannot be called from a module-scoped fixture.  I am considering
introducing an "any" scope for a fixture declaration that would avoid
this error.  The "monkeypatch" and "something" fixture would then look
like this::

    @pytest.fixture(scope="any")
    def monkeypatch(...):
        # unmodified builtin monkeypatch implementation

    @pytest.fixture(scope="module")
    def something(monkeypatch):
        ...

This would not raise a ScopeMismatchError but just work:
monkeypatch-finalizers would be called when the last test in a module
using the "something" fixture has run.

However, if we additionally have a function-scoped fixture::

    @pytest.fixture(scope="function")
    def other(monkeypatch):
        ...

The "monkeypatch" instance could obviously not be the same object as
the one in ``something(monkeypatch)`` above.  monkeypatch-finalizers
would raher be called after a test function using the "other"
fixture has finalized.  I am not sure if there is confusion potential
about this.

If there are any questions or comments, please shoot.

best,
holger

_______________________________________________
py-dev mailing list
py-dev@codespeak.net
http://codespeak.net/mailman/listinfo/py-dev

Reply via email to