1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
"""Test passing invalid arguments to the methods of the MultiDict class."""
from dataclasses import dataclass
from typing import cast
import pytest
from multidict import MultiDict
@dataclass(frozen=True)
class InvalidTestedMethodArgs:
"""A set of arguments passed to methods under test."""
test_id: str
positional: tuple[object, ...]
keyword: dict[str, object]
def __str__(self) -> str:
"""Render a test identifier as a string."""
return self.test_id
@pytest.fixture(
scope="module",
params=(
InvalidTestedMethodArgs("no_args", (), {}),
InvalidTestedMethodArgs("too_many_args", ("a", "b", "c"), {}),
InvalidTestedMethodArgs("wrong_kwarg", (), {"wrong": 1}),
InvalidTestedMethodArgs(
"wrong_kwarg_and_too_many_args",
("a",),
{"wrong": 1},
),
),
ids=str,
)
def tested_method_args(
request: pytest.FixtureRequest,
) -> InvalidTestedMethodArgs:
"""Return an instance of a parameter set."""
return cast(InvalidTestedMethodArgs, request.param)
@pytest.fixture(scope="module")
def multidict_object(
any_multidict_class: type[MultiDict[int]],
) -> MultiDict[int]:
return any_multidict_class([("a", 1), ("a", 2)])
def test_getall_args(
multidict_object: MultiDict[int],
tested_method_args: InvalidTestedMethodArgs,
) -> None:
with pytest.raises(TypeError, match=r".*argument.*"):
multidict_object.getall(
*tested_method_args.positional,
**tested_method_args.keyword,
)
def test_getone_args(
multidict_object: MultiDict[int],
tested_method_args: InvalidTestedMethodArgs,
) -> None:
with pytest.raises(TypeError, match=r".*argument.*"):
multidict_object.getone(
*tested_method_args.positional,
**tested_method_args.keyword,
)
def test_get_args(
multidict_object: MultiDict[int],
tested_method_args: InvalidTestedMethodArgs,
) -> None:
with pytest.raises(TypeError, match=r".*argument.*"):
multidict_object.get(
*tested_method_args.positional,
**tested_method_args.keyword,
)
def test_setdefault_args(
multidict_object: MultiDict[int],
tested_method_args: InvalidTestedMethodArgs,
) -> None:
with pytest.raises(TypeError, match=r".*argument.*"):
multidict_object.setdefault(
*tested_method_args.positional,
**tested_method_args.keyword,
)
def test_popone_args(
multidict_object: MultiDict[int],
tested_method_args: InvalidTestedMethodArgs,
) -> None:
with pytest.raises(TypeError, match=r".*argument.*"):
multidict_object.popone(
*tested_method_args.positional,
**tested_method_args.keyword,
)
def test_pop_args(
multidict_object: MultiDict[int],
tested_method_args: InvalidTestedMethodArgs,
) -> None:
with pytest.raises(TypeError, match=r".*argument.*"):
multidict_object.pop(
*tested_method_args.positional,
**tested_method_args.keyword,
)
def test_popall_args(
multidict_object: MultiDict[int],
tested_method_args: InvalidTestedMethodArgs,
) -> None:
with pytest.raises(TypeError, match=r".*argument.*"):
multidict_object.popall(
*tested_method_args.positional,
**tested_method_args.keyword,
)
|