[pytest-dev] fixtures and pylint W0621

holger krekel holger at merlinux.eu
Tue Dec 3 08:39:19 CET 2013

On Tue, Dec 03, 2013 at 14:51 +1100, Brianna Laugher wrote:
> On 26 November 2013 18:58, holger krekel <holger at merlinux.eu> wrote:
> > I use flakes and pep8 (pytest-flakes and pytest-pep8) and don't get this
> > error.  What you can immediately do but which is not pretty is to use
> > the old naming scheme together with a decorator:
> >
> >     import pytest
> >
> >     @pytest.fixture
> >     def pytest_funcarg__somefixture(...):
> >         ...
> >
> > This should avoid the pylint warning.
> Ah, that's cool - I didn't realise that was possible.
> However, it doesn't work the way you describe. :) Not sure if your
> description or the code is backwards!
> At the moment (pytest-2.3.5) if I have two fixtures like this:
> @py.test.fixture
> def pytest_funcarg__foo2(monkeypatch):
>     return monkeypatch
> def pytest_funcarg__foo3(monkeypatch):
>     return monkeypatch
> foo3 works (!). foo2 causes an assertion error on collection.
> The code in parsefactories has a couple of if blocks, maybe one is inverted. :)

Right, it seems that when we introduced @pytest.fixture we decided you can
either use the prefix or the marker.  That could be lifted but i wonder
if we should rather go for a different convention because pytest_funcarg__
is not a beautiful prefix.  What do you think of pytest stripping the "__" prefix?

    def __foo2(monkeypatch):
       return monkeypatch

This fixture would become accessible via the "foo2" name.  Using "__foo2"
would yield a lookup error and the error would indicate there is a "foo2"
available.  If you don't like it, any other suggestions?

> Don't know if this is a good idea, but you could tell if it was new
> style/old style based on if the parameter was 'request' or
> nothing/other fixtures.

There is no difference between old-style and @pytest.fixture(scope="function")
and the presence of "request" indicates nothing particular.


> cheers
> Brianna
> -- 
> They've just been waiting in a mountain for the right moment:
> http://modernthings.org/

More information about the Pytest-dev mailing list