[py-dev] reversing fixture/xunit setup call order?
holger krekel
holger at merlinux.eu
Sun Dec 16 21:55:22 CET 2012
On Sun, Dec 16, 2012 at 13:49 -0700, lahwran wrote:
> I think it's best to think of the xunit-style setup and teardown as part of
> the actual test - as in, if you're blindly translating this:
>
> class SomethingTest(TestCase):
> def setUp(self):
> self.doop = 1
>
> def tearDown(self):
> del self.doop
>
> def test_something(self):
> assert self.doop == 1
>
> def test_something_else(self):
> assert self.doop != 2
>
> you'd get this:
>
>
> class TestSomething(object):
> def setUp(self):
> self.doop = 1
>
> def tearDown(self):
> del self.doop
>
> def test_something(self):
> self.setUp()
> try:
> assert self.doop == 1
> finally:
> self.tearDown()
>
> def test_something_else(self):
> self.setUp()
> try:
> assert self.doop != 2
> finally:
> self.tearDown()
>
> I'm not sure how to demonstrate an equivalent to setUpClass, but my point
> is that fixtures shouldn't even be able to tell that setup and teardown
> aren't part of the actual test method unless they look for it.
That speaks for executing fixtures ahead of xunit methods, right?
> As for allowing funcargs to the setup functions, I think marking them as
> @pytest.fixture(autouse=True) would be great. I do think that it'd be more
> intuitive for people who are used to xunit style if the @pytest.setup thing
> being discussed on the other thread was made available.
Do you know that you can use @pytest.fixture(autouse=True) on xUnit
setup methods already with the current release? We could think about
introducing a ``@pytest.setup`` shortcut, but i don't think it's worth it.
best,
holger
> On Sun, Dec 16, 2012 at 12:24 PM, holger krekel <holger at merlinux.eu> wrote:
>
> > On Sun, Dec 16, 2012 at 13:21 +0100, Ronny Pfannschmidt wrote:
> > > sounds like the correct curse of action else legacy tests cant be
> > > integrated with fixtures propperly
> >
> > "curse of action" ... like that one :)
> >
> > > i wonder if we should go as far as allowing fixtures to be arguments
> > > to pytest xunit test functions
> >
> > that'd be tricky at least for setup_module and setup_method/function which
> > support a positional argument. Note that you can easily turn your setup
> > function into one that accepts fixtures:
> >
> > @pytest.fixture
> > def setup_method(self, request, tmpdir, ...):
> > ...
> >
> > In this case there is no positional argument but you can get the
> > current function under test via ``request.function``.
> > I think it's clearer to add that extra line.
> >
> > holger
> >
> > > On 12/16/2012 12:23 PM, holger krekel wrote:
> > > >Hi all,
> > > >
> > > >Currently, if you define e.g. an autouse fixture function it is going to
> > > >be called _after_ the xUnit setup functions. This is especially
> > > >surprising when you do a session-scoped autouse fixture. I am wondering
> > > >if we could reverse the order, i.e. call fixture functions (including
> > > >autouse-fixtures of course) ahead of xUnit setup methods.
> > > >
> > > >any thoughts?
> > > >
> > > >holger
> > > >_______________________________________________
> > > >py-dev mailing list
> > > >py-dev at codespeak.net
> > > >http://codespeak.net/mailman/listinfo/py-dev
> > >
> >
> >
> _______________________________________________
> py-dev mailing list
> py-dev at codespeak.net
> http://codespeak.net/mailman/listinfo/py-dev
More information about the Pytest-dev
mailing list