diff --git a/CHANGELOG b/CHANGELOG index 2835b7ca3..8ae8da1f3 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -93,6 +93,9 @@ Unreleased - fix verbose reporting for @mock'd test functions +- allow @pytest.fixture marked pytest_funcarg__foo functions + so that pylint errors can be avoided. + Changes between 2.4.1 and 2.4.2 ----------------------------------- diff --git a/_pytest/python.py b/_pytest/python.py index 1f669251c..fd3972b4d 100644 --- a/_pytest/python.py +++ b/_pytest/python.py @@ -1660,8 +1660,9 @@ class FixtureManager: # magic globals with __getattr__ might have got us a wrong # fixture attribute continue - else: - assert not name.startswith(self._argprefix) + elif name.startswith(self._argprefix): + # let's allso fixture-marked pytest_funcarg__ prefixed functions + name = name[len(self._argprefix):] fixturedef = FixtureDef(self, nodeid, name, obj, marker.scope, marker.params, yieldctx=marker.yieldctx, diff --git a/testing/python/integration.py b/testing/python/integration.py index 6fbf44572..c34f92806 100644 --- a/testing/python/integration.py +++ b/testing/python/integration.py @@ -195,3 +195,16 @@ class TestReRunTests: def test_pytestconfig_is_session_scoped(): from _pytest.python import pytestconfig assert pytestconfig._pytestfixturefunction.scope == "session" + +def test_funcarg_prefix_and_marker(testdir): + testdir.makepyfile(""" + import pytest + @pytest.fixture + def pytest_funcarg__foo(): + return 1 + + def test_hello(foo): + assert foo == 1 + """) + reprec = testdir.inline_run() + reprec.assertoutcome(passed=1)