Improve a comment

This commit is contained in:
Sadra Barikbin 2023-08-10 12:14:53 +03:30
parent 0b725e70ab
commit fc92f9f1dd
1 changed files with 9 additions and 7 deletions

View File

@ -58,9 +58,9 @@ from _pytest.config.argparsing import Parser
from _pytest.deprecated import check_ispytest from _pytest.deprecated import check_ispytest
from _pytest.deprecated import INSTANCE_COLLECTOR from _pytest.deprecated import INSTANCE_COLLECTOR
from _pytest.deprecated import NOSE_SUPPORT_METHOD from _pytest.deprecated import NOSE_SUPPORT_METHOD
from _pytest.fixtures import _get_direct_parametrize_args
from _pytest.fixtures import FixtureDef from _pytest.fixtures import FixtureDef
from _pytest.fixtures import FixtureRequest from _pytest.fixtures import FixtureRequest
from _pytest.fixtures import _get_direct_parametrize_args
from _pytest.fixtures import FuncFixtureInfo from _pytest.fixtures import FuncFixtureInfo
from _pytest.fixtures import get_scope_node from _pytest.fixtures import get_scope_node
from _pytest.main import Session from _pytest.main import Session
@ -503,13 +503,15 @@ class PyCollector(PyobjMixin, nodes.Collector):
if not metafunc._calls: if not metafunc._calls:
yield Function.from_parent(self, name=name, fixtureinfo=fixtureinfo) yield Function.from_parent(self, name=name, fixtureinfo=fixtureinfo)
else: else:
if hasattr(metafunc, "has_dynamic_parametrize"): if hasattr(metafunc, "has_dynamic_parametrize"):
# add_funcarg_pseudo_fixture_def may have shadowed some fixtures # Parametrizations takeing place in module/class-specific `pytest_generate_tests`
# due to dynamic direct parametrization so make sure we update # hooks, a.k.a dynamic parametrizations, may have shadowed some fixtures
# what the function really needs. Note that we didn't need to do this if # so make sure we update what the function really needs.
# only indirect dynamic parametrization had taken place, but anyway we did #
# it as differentiating between direct and indirect requires a dirty hack. # Note that we didn't need to do this if only indirect dynamic parametrization had
# taken place i.e. with `indirect=True`, but anyway we did it as differentiating
# between direct and indirect requires a dirty hack.
fm = self.session._fixturemanager
fixture_closure, _ = fm.getfixtureclosure( fixture_closure, _ = fm.getfixtureclosure(
definition, definition,
fixtureinfo.initialnames, fixtureinfo.initialnames,