Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

pytest.mark.parameterize not "finding" fixtures

Tags:

python

pytest

I'm writing tests for a small library and I decided to use py.test after hearing so many good things about it.

However, pytest.mark.parameterize is giving me some issues. At first, I thought maybe I just mismatched some parens and it went off looking for a fixture elsewhere. So I decided to start with the given example of parameterize:

@pytest.mark.parametrize("input,expected", [
    ("3+5", 8),
    ("2+4", 6),
    ("6*9", 42),
])
def test_eval(input, expected):
    assert eval(input) == expected

But this gives the same error:

fixture 'input' not found

available fixtures: capfd, pytestconfig, recwarn, capsys, tmpdir, monkeypatch

use 'py.test --fixtures [testpath]' for help on them.

I went off googling, but I couldn't find any answers that applied. Any ideas on how to approach this?

Edit: I suppose knowing which Python/py.test versions is helpful.

Python 3.4.0 and py.test 2.6.4

like image 984
justanr Avatar asked May 05 '26 18:05

justanr


2 Answers

I just tried your example verbatim and it worked fine in pytest 2.6.4. Perhaps you are misspelling parametrize? You misspelled it in the title and is a common mistake, as can be seen in this issue.

like image 150
Bruno Oliveira Avatar answered May 08 '26 11:05

Bruno Oliveira


It's not the same cause, but this is the first result on google for "pytest parametrize fixture not found", which was my natural google for the same error as OP:

E fixture 'blah' not found

In my case it was due to a silly typo (which I didn't spot for far too long!), missing the @ from the decorator:

pytest.mark.parametrize("blah", [50, 100])
def test_something(blah):
    assert blah > 0
like image 27
Indivicivet Avatar answered May 08 '26 10:05

Indivicivet