[Pytest-commit] Issue #446: Alternative syntax: allow no-argument fixture functions to be used as decorators (hpk42/pytest)

leo-the-manic issues-reply at bitbucket.org
Tue Feb 4 17:12:42 CET 2014


New issue 446: Alternative syntax: allow no-argument fixture functions to be used as decorators
https://bitbucket.org/hpk42/pytest/issue/446/alternative-syntax-allow-no-argument

leo-the-manic:

Hi pytest team! I just started using this library a week ago and it is fantastic!! I love the detailed test output and the elegant looking test code.

Sorry to gush. Anyway, I am using fixtures I don't need direct access to, in exactly the way explained by the docs here: http://pytest.org/latest/fixture.html#using-fixtures-from-classes-modules-or-projects

My issue is this: the fixture function itself needs a ``@pytest.fixture`` decorator in order to enter the pytest fixture machinery, then to be used outside of a funcarg, it must be written in a ``@pytest.mark.usefixtures()`` decorator. I find the ``@pytest.mark.usefixtures`` a bit noisy and for some reason something about it simply rubs me the wrong way.

My suggestion is to transform functions decorated with ``@pytest.fixture`` into decorators themselves so they can mark the functions/classes where they're used.

In other words, turn:

```
#!python
@pytest.mark.usefixtures("cleandir")
def test_cwd_starts_empty(self):
```

into

```
#!python
@cleandir
def test_cwd_starts_empty(self):
```

I am not aware of the technical complexity involved in implementing a syntax like this. But if it's possible I think it would be a nice, concise syntax that would be much more in line with the funcargs injection style, in terms of brevity.

On top of that it would avoid the "stringly-typed" nature of the usefixtures function. I am aware that other aspects (e.g. funcargs) are also stringly typed, but I still think that letting most linters check the correctness of the decorator calls would be at least a minor gain.

Welp, that's all! Thanks for your time =]




More information about the pytest-commit mailing list