support override of the parametrized fixture on the test level
--HG-- branch : parametrized-fixture-override
This commit is contained in:
parent
060609317a
commit
c4623939af
|
@ -1716,6 +1716,9 @@ class FixtureManager:
|
||||||
continue # will raise FixtureLookupError at setup time
|
continue # will raise FixtureLookupError at setup time
|
||||||
for fixturedef in faclist[-1:]:
|
for fixturedef in faclist[-1:]:
|
||||||
if fixturedef.params is not None:
|
if fixturedef.params is not None:
|
||||||
|
func_params = getattr(getattr(metafunc.function, 'parametrize', None), 'args', [[None]])
|
||||||
|
# skip directly parametrized arguments
|
||||||
|
if argname not in func_params and argname not in func_params[0]:
|
||||||
metafunc.parametrize(argname, fixturedef.params,
|
metafunc.parametrize(argname, fixturedef.params,
|
||||||
indirect=True, scope=fixturedef.scope,
|
indirect=True, scope=fixturedef.scope,
|
||||||
ids=fixturedef.ids)
|
ids=fixturedef.ids)
|
||||||
|
|
|
@ -401,6 +401,23 @@ class TestFunction:
|
||||||
rec.assertoutcome(passed=1)
|
rec.assertoutcome(passed=1)
|
||||||
|
|
||||||
|
|
||||||
|
def test_parametrize_overrides_parametrized_fixture(self, testdir):
|
||||||
|
"""Test parametrization when parameter overrides existing parametrized fixture with same name."""
|
||||||
|
testdir.makepyfile("""
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
@pytest.fixture(params=[1, 2])
|
||||||
|
def value(request):
|
||||||
|
return request.param
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('value',
|
||||||
|
['overrided'])
|
||||||
|
def test_overrided_via_param(value):
|
||||||
|
assert value == 'overrided'
|
||||||
|
""")
|
||||||
|
rec = testdir.inline_run()
|
||||||
|
rec.assertoutcome(passed=1)
|
||||||
|
|
||||||
def test_parametrize_with_mark(selfself, testdir):
|
def test_parametrize_with_mark(selfself, testdir):
|
||||||
items = testdir.getitems("""
|
items = testdir.getitems("""
|
||||||
import pytest
|
import pytest
|
||||||
|
|
Loading…
Reference in New Issue