[pytest-dev] Parametrized fixture fails when using unittest
Nikolaus Rath
Nikolaus at rath.org
Mon Feb 10 04:51:31 CET 2014
Hello,
I don't understand why the following test fixture works for the test
function, but fails for the test method. Am I doing something wrong, or
is this a bug?
$ cat t0_mine.py
import pytest
import unittest
@pytest.yield_fixture(params=(0,1,2))
def param1(request):
if request.param == 1:
pytest.skip('not so good')
yield request.param
@pytest.fixture(params=('a','b'))
def param2(request, param1):
return (param1, request.param)
@pytest.fixture()
def param1a(request, param1):
if param1 == 1:
return 0
else:
return 7
def test_function(param2, param1a):
if param2[0] == 1:
assert param1a == 0
else:
assert param1a == 7
@pytest.mark.usefixtures('param2', 'param1a')
$ py.test-3 t0_mine.py -v
==================================== test session starts ====================================
platform linux -- Python 3.3.3 -- pytest-2.5.1 -- /usr/bin/python3
collected 7 items
t0_mine.py:25: test_function[a-0] PASSED
t0_mine.py:25: test_function[a-1] SKIPPED
t0_mine.py:25: test_function[a-2] PASSED
t0_mine.py:25: test_function[b-0] PASSED
t0_mine.py:25: test_function[b-1] SKIPPED
t0_mine.py:25: test_function[b-2] PASSED
t0_mine.py:33: TestClass.test_method ERROR
========================================== ERRORS ===========================================
__________________________ ERROR at setup of TestClass.test_method __________________________
request = <SubRequest 'param1' for <TestCaseFunction 'test_method'>>
@pytest.yield_fixture(params=(0,1,2))
def param1(request):
> if request.param == 1:
E AttributeError: 'SubRequest' object has no attribute 'param'
t0_mine.py:9: AttributeError
======================= 4 passed, 2 skipped, 1 error in 0.02 seconds ========================
Best,
Nikolaus
--
Encrypted emails preferred.
PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6 02CF A9AD B7F8 AE4E 425C
»Time flies like an arrow, fruit flies like a Banana.«
More information about the Pytest-dev
mailing list