Я взаимодействую с API, для которого у меня есть библиотека Python.Библиотека предоставляет класс APIClient
, который предоставляет все функциональные возможности API.Я хочу взаимодействовать с этим API в соответствии с некоторой логикой, и я хотел бы иметь возможность протестировать логику wihtout , выполняющую вызовы API (т. Е. Макет), поскольку он является транзакционным.
Ясно, что мне нужно (на каком-то этапе) макетировать некоторые функции API-клиента, но я не уверен, как лучше это сделать.
Должен ли я просто расширить APIClient
класс, реализовать мою логику, а затем снова расширить мой класс, чтобы создать фиктивную версию:
class MyClass(APIClient):
pass #Lots of interesting things actually happen here
class MyTestClass(MyClass):
def an_overridden_method(self):
pass #here I implement a method for testing
Или я должен передать экземпляр APIClient
своему классу и, когда я хочу проверить, я должен пройти вмакетная версия класса APIClient
?
class MyClass(object):
def __init__(self, api_client):
self.api_client = api_client
class MockAPIClient(APIClient):
def an_overwritten_method(self):
pass
Или есть ли для меня способ «наилучшей практики» для реализации этого?