высмеивание объекта - PullRequest
       0

высмеивание объекта

0 голосов
/ 28 января 2020

Я пытаюсь смоделировать объект запроса с помощью 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.',))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...