New issue 634: metafunc.parametrize overwrites scope https://bitbucket.org/hpk42/pytest/issue/634/metafuncparametrize-overwrites-scope
Nikolaus Rath: According to http://pytest.org/latest/parametrize.html#the-metafunc-object, the `scope` parameter overrides the fixture scope *if specified*. But in practice, the fixture scope seems to be ignored even if no `scope` parameter is passed to `metafunc.parametrize`. Example: ``` #!python $ cat test_me.py #!/usr/bin/env python3 import pytest import logging log = logging.getLogger(__name__) @pytest.fixture(scope='module') def foo(request): print('preparing foo-%d' % request.param) return 'foo-%d' % request.param def test_one(foo): print(foo) def test_two(foo): print(foo) test_two.test_with = (2,3) def pytest_generate_tests(metafunc): params = list(range(4)) if not 'foo' in metafunc.fixturenames: return test_with = getattr(metafunc.function, 'test_with', None) if test_with: params = test_with metafunc.parametrize("foo", params, indirect=True) $ py.test-3 test_me.py -v -s ============================= test session starts ============================= platform linux -- Python 3.4.2 -- py-1.4.25 -- pytest-2.6.3 -- /usr/bin/python3 plugins: capturelog, ordering collected 6 items test_me.py::test_one[0] preparing foo-0 foo-0 PASSED test_me.py::test_one[1] preparing foo-1 foo-1 PASSED test_me.py::test_one[2] preparing foo-2 foo-2 PASSED test_me.py::test_one[3] preparing foo-3 foo-3 PASSED test_me.py::test_two[2] preparing foo-2 foo-2 PASSED test_me.py::test_two[3] preparing foo-3 foo-3 PASSED ========================== 6 passed in 0.01 seconds =========================== ``` Note how the fixture is called multiple times for the same parameter. _______________________________________________ pytest-commit mailing list pytest-commit@python.org https://mail.python.org/mailman/listinfo/pytest-commit