[pytest-dev] Fixture ordering and scopes
Bruno Oliveira
nicoddemus at gmail.com
Fri Mar 16 14:59:32 EDT 2018
On Fri, Mar 16, 2018 at 2:36 PM Floris Bruynooghe <flub at devork.be> wrote:
> Bruno Oliveira <nicoddemus at gmail.com> writes:
>
> > So the order is important here, and leaving it undefined will require
> > people to write this instead:
> >
> > @pytest.fixture(scope='session', autouse=True)
> > def my_setup_logging(log_setup): pass
> >
> > @pytest.fixture(scope='session', autouse=True)
> > def my_db_setup(my_setup_logging ): pass
> >
> > While it works, it feels like unnecessary boilerplate.
>
> I'm not sure you finished your example there. I'm actually curious what
> you'd do.
>
I did finish it :)
Because `my_db_setup` depends on `my_setup_logging`, this guarantees that
they will execute in the correct order.
It is a great example, it really stretches the composability of
> fixtures. If someone where to ask me this though I think the only thing
> I'd come up with is this:
>
> import db
>
> @pytest.fixture(scope='session', autouse=True)
> def my_db(log_setup):
> return db.db_setup() # This needs to do the right thing.
>
>
This is fine if `db_setup` is a fixture which doesn't depend on others, but
if `db_setup` depends on other fixtures (say `tmpdir`) then this won't work
so well.
Cheers,
Bruno.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pytest-dev/attachments/20180316/8adb70da/attachment.html>
More information about the pytest-dev
mailing list