Издевательствование поля в запросе

108
9

Есть 2 рамки - Django и Flask. Django запускает проект с помощью REST, а Flask - с уровнем оркестровки.

Теперь есть тест, который должен проверять один из методов CRUD:

@mock.patch('requests.post')
def test_create(self, request_mock,):
request_mock.return_value = self.response_generator.create()
response = self.client.post(url_for('foo.list', account='bar'),
content_type='application/json',
data=json.dumps({
"name": "Foo",
"type": "baz"
}))
self.assertEqual(response.status_code, 201)

name и type являются обязательными. name - это просто строка. Но type - это URL-адрес этого типа (в REST), поэтому, когда baz передается, он использует магию для подключения к REST и получения данных.

Проблема в том, что при запуске теста Django с REST отключен, в то время как тест по-прежнему пытается подключиться к нему, что приводит к ошибке таймаута.

с ConnectionError: HTTPConnectionPool (host = '10.10.10.10 ', port = 8000): Максимальное количество попыток превышено с помощью url: /rest/accounts/bar/baz/(вызвано NewConnectionError (': Не удалось установить новое соединение: [Errno 111 ] В соединении отказано',))

Вопрос: теперь как вы издеваетесь над этим type, поэтому он не вызывает автономный сервер?

спросил(а) 2021-01-25T15:46:43+03:00 4 месяца, 3 недели назад
1
Решение
63

Самое первое условие для полезных модульных тестов - издеваться над внешними зависимостями, которые могут иметь эти тесты. Как и в вашем случае, вы должны иметь возможность запускать его независимо от доступности службы, которую вы пытаетесь протестировать.

Хотя я не знаю, что означает self.client (так как вы не self.client код для него), я думаю, по сообщению об ошибке, которое вы опубликовали, что вы создали клиент urllib.

Однако, если вы намерены проверить представление в своем проекте Django, вам следует использовать клиентский тест django, как предлагают документы Dzhango. В зависимости от ваших потребностей вы также должны рассмотреть RequestFactory.

Поэтому нет необходимости иметь клиента urllib, так как инфраструктура предоставляет вам необходимые инструменты для тестирования единиц.

Есть также похожие вопросы

ответил(а) 2021-01-25T15:46:43+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема