Вот код, мы используем библиотеку запросов для вызова внешних API. Поэтому мы создаем контекстный процессор с объектом фиктивных запросов.
Так что, если бы мы тестировали функцию get_data, это было бы так, как мы бы смоделировали запрос к внешнему API:
import requests
import mock
import unittest
def get_data(url):
resp = requests.get(url)
return resp
class GetDataTest(unittest.TestCase):
def test_get_data(self):
with mock.patch.object(requests, 'get') as get_mock:
get_mock.return_value = mock_response = mock.Mock()
mock_response.status_code = 200
mock_response.content = {'twitter_handle': '@twitter'}
resp = get_data("http://this_address_does_not_exist.com")
self.assertEqual(resp.status_code, 200)
self.assertEqual(resp.content['twitter_handle'], '@twitter')