У меня есть тестовый класс с именем 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-адрес.Но я не могу понять, как заставить это работать должным образом.