Я пытаюсь смоделировать объект запроса с помощью json пар ключ-значение. Я использую методы request.query_params. Затем в модульном тесте для аргумента я использую 'request', который выдает мне ошибку: AttributeError: У ложного объекта нет атрибута 'query_params':
Затем я пытаюсь это:
class RequestFixture:
query_params = {'start': "2019-01-01", 'end': "2019-12-30"}
и это работает. Но я хочу MOCK этот запрос с тем же методом, который содержит некоторые данные. Я понимаю, что мне нужно издеваться не только над запросом, но и над встроенным методом 'query_parmas' и ставить то же значение, но я не знаю как?
Вот некоторые фрагменты из моего кода:
view.py
class GroupsOverview (APIView):
def get(self, request, *args, **kwargs):
days = request.query_params
data = _collect_needed_data(object_1_id, object_2_id, days)
...
и из моего unittes.py:
@mock.patch ('own.views.get_object_or_404' ) def test_get_method_invalid_object (self, mock_get_object_or_404):
class RequestFixture:
query_params = {'start': "2019-01-01", 'end': "2019-12-30"}
# (but if i pass 'request' as an argument in get function it will break)
mock_get_object_or_404.side_effect = Http404('No Object matches the given query.')
with self.assertRaises(Http404) as ex:
GroupsOverview().get(RequestFixture, hash=self.hash_value)
self.assertEqual(ex.exception.args, ('No Object matches the given query.',))