[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