Mock assert_called_with обрабатывает аргумент как неупорядоченный список
У меня есть некая подражаемая функция, и я пытаюсь проверить, что аргументы, которые я туда передаю, корректны.
Один из аргументов - список, сгенерированный на основе DB queryset, допустим [{"id": 1}, {"id": 13}]
.
Функцию не волнует порядок диктов в списке, поэтому она работает одинаково с обратным (перетасованным) списком.
У меня также есть тест для проверки правильности передачи аргументов:
function_mock.assert_called_once_with(
argument1='some_string',
argument2='another_string',
argument3={'some_dict_key': False},
...
my_list=[{"id": 1}, {"id": 13}],
)
Проблема в том, что на разных окружениях queryset выдает записи в разном порядке, в результате чего на одних окружениях получается [{"id": 1}, {"id": 13}]
, а на других [{"id": 13}, {"id": 1}]
(другой порядок). Это приводит к тому, что тесты проходят на одних средах и не проходят на других.
Есть ли способ сообщить mock, что этот аргумент должен рассматриваться как неупорядоченный список?
Что-то похожее на my_list=mock.any_order([{...}, {...}])
P.S. Я знаю о call_args_list
, поэтому могу проверять аргументы по одному, и применять set
при необходимости, но я хотел бы избежать этого решения, если нет лучшего.