python3.6 @ mock.patch не дразнит запросы. запрос - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть тестовый класс с именем test_voting_utils.py, расположенный в root / mycity / mycity / test / unit_tests / test_voting_utils.py

, класс выглядит следующим образом:

import mycity.test.unit_tests.base as base
import unittest.mock as patch
import mycity.test.test_constants as test_constants
import mycity.utilities.voting_utils as vote_utils
import mycity.intents.intent_constants as intent_constants


class VotingUtilitiesTestCase(base.BaseTestCase):

    # @mock.patch('mycity.utilities.voting_utils.requests')
    # def test_get_ward_precinct_info(self, mock_get):
    #     mock_resp = self._mock_response(status=200, 
    #         json_data=test_constants.MOCK_WARD_PRECINCT_RESP)
    #     mock_get.return_value = mock_resp
    #     expected_output_text = test_constants.WARD_PRECINCT
    #     result = vote_utils.get_ward_precinct_info(test_constants.COORDS)
    #     self.assertEquals(expected_output_text, result)

    @patch('requests.request')
    def test_get_polling_location(self, mock_get):
        mock_resp = self._mock_response(status=200, 
            json_data=test_constants.MOCK_POLL_RESP)
        mock_get.return_value = mock_resp
        expected_output_text = test_constants.POLL_DATA
        result = vote_utils.get_polling_location(test_constants.WARD_PRECINCT)
        self.assertEquals(expected_output_text, result)

I тогдаимпортировать файл, который я пытаюсь протестировать выше, с именем голосования_пользователем.py, расположенным по адресу root / mycity / mycity / utilities / голосования_utils.py. Это тот файл:

import requests
import json
import re


def get_polling_location(ward_precinct):
    """
    Returns dictionary containing location name and address from the provided ward and precinct

    :param ward_precinct: dictionary object containing the ward and precinct
    :return: Dict containing location address string and
        location name string
    """
    requests.request("http://test.com")

Теперь я не уверен, почему яне могу смоделировать объект моих запросов в методе test_get_polling_location.Я пробовал @mock.patch('mycity.mycity.utilities.voting_utils.requests') и другие различные формы, но каждая из них, похоже, не работает.Я, вероятно, неправильно использую патч, но я не могу найти информацию, чтобы знать наверняка.Ошибки, которые возникают, когда я сам запускаю модульное тестирование, следующие:

o_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [Errno 8] nodename nor servname provided, or not known>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...