feat: X-Proxy
This commit is contained in:
+30
-10
@@ -5,6 +5,8 @@ import typing
|
||||
import unittest
|
||||
import unittest.mock
|
||||
|
||||
__import__("sys").modules["unittest.util"]._MAX_LENGTH = 999999999 # ty:ignore[unresolved-attribute] # noqa: SLF001
|
||||
|
||||
|
||||
class BaseTestCase(unittest.TestCase):
|
||||
@typing.override
|
||||
@@ -47,16 +49,19 @@ class BaseTestCase(unittest.TestCase):
|
||||
target: str,
|
||||
args: list[typing.Iterable[typing.Any]] | None = None,
|
||||
return_values: list[typing.Any] | None = None,
|
||||
kwargs: list[dict[str, typing.Any]] | None = None,
|
||||
) -> typing.Iterator[unittest.mock.Mock]:
|
||||
if args is None:
|
||||
args = [[]]
|
||||
if return_values is None:
|
||||
return_values = [None] * len(args)
|
||||
if kwargs is None:
|
||||
kwargs = [{}] * len(args)
|
||||
with unittest.mock.patch(
|
||||
target, side_effect=return_values, create=True
|
||||
) as mock:
|
||||
yield mock
|
||||
self.__check_calls(mock, args)
|
||||
self.__check_calls(mock, args, kwargs)
|
||||
|
||||
@contextlib.contextmanager
|
||||
def patch_call(
|
||||
@@ -64,10 +69,13 @@ class BaseTestCase(unittest.TestCase):
|
||||
target: str,
|
||||
args: typing.Iterable[typing.Any] | None = None,
|
||||
return_value: typing.Any = None,
|
||||
kwargs: dict[str, typing.Any] | None = None,
|
||||
) -> typing.Iterator[unittest.mock.Mock]:
|
||||
if args is None:
|
||||
args = []
|
||||
with self.patch_calls(target, [args], [return_value]) as mock:
|
||||
if kwargs is None:
|
||||
kwargs = {}
|
||||
with self.patch_calls(target, [args], [return_value], [kwargs]) as mock:
|
||||
yield mock
|
||||
|
||||
@contextlib.contextmanager
|
||||
@@ -84,15 +92,18 @@ class BaseTestCase(unittest.TestCase):
|
||||
mock: unittest.mock.Mock,
|
||||
args: list[typing.Iterable[typing.Any]] | None = None,
|
||||
return_values: list[typing.Any] | None = None,
|
||||
kwargs: list[dict[str, typing.Any]] | None = None,
|
||||
) -> typing.Iterator[None]:
|
||||
if args is None:
|
||||
args = [[]]
|
||||
if return_values is None:
|
||||
return_values = [None] * len(args)
|
||||
if kwargs is None:
|
||||
kwargs = [{}] * len(args)
|
||||
mock.side_effect = return_values
|
||||
mock.reset_mock()
|
||||
yield
|
||||
self.__check_calls(mock, args)
|
||||
self.__check_calls(mock, args, kwargs)
|
||||
|
||||
@contextlib.contextmanager
|
||||
def mock_call(
|
||||
@@ -100,10 +111,13 @@ class BaseTestCase(unittest.TestCase):
|
||||
mock: unittest.mock.Mock,
|
||||
args: typing.Iterable[typing.Any] | None = None,
|
||||
return_value: typing.Any = None,
|
||||
kwargs: dict[str, typing.Any] | None = None,
|
||||
) -> typing.Iterator[None]:
|
||||
if args is None:
|
||||
args = []
|
||||
with self.mock_calls(mock, [args], [return_value]):
|
||||
if kwargs is None:
|
||||
kwargs = {}
|
||||
with self.mock_calls(mock, [args], [return_value], [kwargs]):
|
||||
yield
|
||||
|
||||
@contextlib.contextmanager
|
||||
@@ -140,17 +154,23 @@ class BaseTestCase(unittest.TestCase):
|
||||
self,
|
||||
mock: unittest.mock.Mock,
|
||||
args: list[typing.Iterable[typing.Any]],
|
||||
kwargs: list[dict[str, typing.Any]],
|
||||
) -> None:
|
||||
total_rows = max(len(args), len(mock.method_calls), len(kwargs))
|
||||
missing_calls = max(0, total_rows - len(mock.mock_calls))
|
||||
missing_args = max(0, total_rows - len(args))
|
||||
missing_kwargs = max(0, total_rows - len(kwargs))
|
||||
for i, values in enumerate(
|
||||
zip(
|
||||
mock.mock_calls
|
||||
+ [None]
|
||||
* (max(len(args), len(mock.method_calls)) - len(mock.mock_calls)),
|
||||
args + [[]] * (max(len(args), len(mock.method_calls)) - len(args)),
|
||||
mock.mock_calls + [None] * missing_calls,
|
||||
args + [[]] * missing_args,
|
||||
kwargs + [{}] * missing_kwargs,
|
||||
strict=False,
|
||||
)
|
||||
):
|
||||
real_call, expected_args = values
|
||||
real_call, expected_args, expected_kwargs = values
|
||||
self.assertEqual(
|
||||
real_call, unittest.mock.call(*expected_args), f"{i + 1}: {mock}"
|
||||
real_call,
|
||||
unittest.mock.call(*expected_args, **expected_kwargs),
|
||||
f"{i + 1}: {mock}",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user