Skip to content

Commit

Permalink
Support pytest 6.x
Browse files Browse the repository at this point in the history
pytest has removed support for pytest.Class().collect()
and we need to use from_parent.

Change-Id: Ia5fed9b22e76c99f71489283acee207f996f52a4
(cherry picked from commit ffafbd4)
  • Loading branch information
zzzeek committed Sep 27, 2020
1 parent 1efd450 commit 40cdb9c
Showing 1 changed file with 7 additions and 14 deletions.
21 changes: 7 additions & 14 deletions lib/sqlalchemy/testing/plugin/pytestplugin.py
Expand Up @@ -162,13 +162,10 @@ def pytest_collection_modifyitems(session, config, items):
if sub_cls is not test_class.cls:
per_cls_dict = rebuilt_items[test_class.cls]

# in pytest 5.4.0
# for inst in pytest.Class.from_parent(
# test_class.parent.parent, name=sub_cls.__name__
# ).collect():

for inst in pytest.Class(
sub_cls.__name__, parent=test_class.parent.parent
# support pytest 5.4.0 and above pytest.Class.from_parent
ctor = getattr(pytest.Class, "from_parent", pytest.Class)
for inst in ctor(
name=sub_cls.__name__, parent=test_class.parent.parent
).collect():
for t in inst.collect():
per_cls_dict[t.name].append(t)
Expand Down Expand Up @@ -196,15 +193,11 @@ def pytest_pycollect_makeitem(collector, name, obj):

if inspect.isclass(obj) and plugin_base.want_class(name, obj):

# in pytest 5.4.0
# return [
# pytest.Class.from_parent(collector,
# name=parametrize_cls.__name__)
# for parametrize_cls in _parametrize_cls(collector.module, obj)
# ]
# support pytest 5.4.0 and above pytest.Class.from_parent
ctor = getattr(pytest.Class, "from_parent", pytest.Class)

return [
pytest.Class(parametrize_cls.__name__, parent=collector)
ctor(name=parametrize_cls.__name__, parent=collector)
for parametrize_cls in _parametrize_cls(collector.module, obj)
]
elif (
Expand Down

0 comments on commit 40cdb9c

Please sign in to comment.