test: use new `MarkMatcher.from_markers` method & register test markers

This commit is contained in:
lovetheguitar 2024-06-21 14:45:27 +02:00
parent 6dd8ad60a4
commit 3921d94316
2 changed files with 11 additions and 28 deletions

View File

@ -358,6 +358,9 @@ markers = [
"foo", "foo",
"bar", "bar",
"baz", "baz",
"number_mark",
"builtin_matchers_mark",
"str_mark",
# conftest.py reorders tests moving slow ones to the end of the list # conftest.py reorders tests moving slow ones to the end of the list
"slow", "slow",
# experimental mark for all tests using pexpect # experimental mark for all tests using pexpect

View File

@ -1,11 +1,9 @@
from __future__ import annotations from __future__ import annotations
import collections
from typing import Callable from typing import Callable
from typing import cast from typing import cast
from _pytest.mark import MarkMatcher from _pytest.mark import MarkMatcher
from _pytest.mark import structures
from _pytest.mark.expression import Expression from _pytest.mark.expression import Expression
from _pytest.mark.expression import MatcherCall from _pytest.mark.expression import MatcherCall
from _pytest.mark.expression import ParseError from _pytest.mark.expression import ParseError
@ -241,33 +239,15 @@ def test_invalid_kwarg_name_or_value( # TODO: move to `test_syntax_errors` ?
@pytest.fixture(scope="session") @pytest.fixture(scope="session")
def mark_matcher() -> MarkMatcher: def mark_matcher() -> MarkMatcher:
markers = [] markers = [
mark_name_mapping = collections.defaultdict(list) pytest.mark.number_mark(a=1, b=2, c=3, d=999_999).mark,
pytest.mark.builtin_matchers_mark(x=True, y=False, z=None).mark,
pytest.mark.str_mark(
m="M", space="with space", empty="", aaאבגדcc="aaאבגדcc", אבגד="אבגד"
).mark,
]
def create_marker(name: str, kwargs: dict[str, object]) -> structures.Mark: return MarkMatcher.from_markers(markers)
return structures.Mark(name=name, args=tuple(), kwargs=kwargs, _ispytest=True)
markers.append(create_marker("number_mark", {"a": 1, "b": 2, "c": 3, "d": 999_999}))
markers.append(
create_marker("builtin_matchers_mark", {"x": True, "y": False, "z": None})
)
markers.append(
create_marker(
"str_mark",
{
"m": "M",
"space": "with space",
"aaאבגדcc": "aaאבגדcc",
"אבגד": "אבגד",
"empty": "",
},
)
)
for marker in markers:
mark_name_mapping[marker.name].append(marker)
return MarkMatcher(mark_name_mapping)
@pytest.mark.parametrize( @pytest.mark.parametrize(