[pytest-dev] Parametrized fixture fails when using unittest
Nikolaus Rath
Nikolaus at rath.org
Mon Feb 10 17:45:34 CET 2014
Hi,
Seems you can't even trust copy and paste anymore... no idea how that
happened. Here's the missing part (so no, self is not missing):
[...]
@pytest.mark.usefixtures('param2', 'param1a')
class TestClass(unittest.TestCase):
def test_method(self):
if self.param2[0] == 1:
assert self.param1a == 0
else:
assert self.param1a == 7
Thanks,
-Nikolaus
"Florian Schulze" <florian.schulze-hi6Y0CQ0nG0 at public.gmane.org> writes:
> Hi!
>
> You didn't include the test_method, maybe you just forgot the 'self'
> as first parameter?
>
> Regards,
> Florian Schulze
>
>
> On 10 Feb 2014, at 4:51, Nikolaus Rath wrote:
>
>> 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.«
>> _______________________________________________
>> Pytest-dev mailing list
>> Pytest-dev at python.org
>> https://mail.python.org/mailman/listinfo/pytest-dev
> _______________________________________________
> Pytest-dev mailing list
> Pytest-dev at python.org
> https://mail.python.org/mailman/listinfo/pytest-dev
--
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