Я написал программу на Python, которая работает с двумя разными API для получения данных из двух разных служб (CKAN и MediaWiki). В частности, есть класс Resource, который запрашивает данные у вышеперечисленных сервисов и обрабатывает их.
В какой-то момент я пришел к выводу, что для моего приложения нужны тесты. И проблема в том, что все примеры, которые я нашел в Интернете и в книгах, не касаются таких случаев.
Например, внутри класса Resource у меня есть метод:
def load_from_ckan(self):
"""
Get the resource
specified by self.id
from config.ckan_api_url
"""
data = json.dumps({'id': self.id})
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
url = config.ckan_api_url + '/action/resource_show'
r = requests.post(url, timeout=config.ckan_request_timeout, data=data, headers=headers)
assert r.ok, r
resource = json.loads(r.content)
resource = resource["result"]
for key in resource:
setattr(self, key, resource[key])
Метод load_from_ckan получает данные о ресурсе из CKAN API и присваивает их объекту. Это просто, но...
Мой вопрос: как протестировать подобные методы? ИЛИ Что мне следует протестировать здесь?
Я подумал о возможности консервировать (сохранять) результаты на HDD. Затем я мог загрузить его в тест и сравнить с объектом, инициализированным функцией load_from_ckan(). Но CKAN — это платформа, управляемая сообществом, и такое поведение таких тестов будет непредсказуемым.
Если существуют какие-либо книги по философии автоматизированных тестов (например, что тестировать, что не тестировать, как сделать тесты осмысленными и т. д.), пожалуйста, дайте мне ссылку на них.