Как я могу проверить API Amazon? - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть следующий код.

Как проверить функцию create_items_by_parent_asin?

def get_amazon():
    return AmazonAPI(settings.AMAZON_ACCESS_KEY, settings.AMAZON_SECRET_KEY, settings.AMAZON_ASSOC_TAG)

def get_item_by_asin(asin: str, response_group='Large'):
    amazon = get_amazon()
    product = amazon.lookup(ItemId=asin, ResponseGroup=response_group)
    return product

def create_items_by_parent_asin(self, asin: str):
    amazon_item = get_item_by_asin(asin, response_group='Large')
    ....

1 Ответ

2 голосов
/ 07 февраля 2020

Вы не тестируете API, вы высмеиваете взаимодействия с amazon с помощью другой реализации AmazonAPI.

В python это можно сделать с помощью unittest.mock: https://docs.python.org/3/library/unittest.mock.html

Прошло много времени с тех пор, как я сделал это в python, но в iir c вы можете просто сделать что-то подобное в своих тестовых классах (не проверено, я адаптировал пример из документации ):

testproduct = ... # static product you will use in your tests
with patch('AmazonAPI') as mock:
    instance = mock.return_value
    instance.lookup.return_value = testproduct
    product = x.create_items_by_parent_asin("...") # this should now be your testproduct

Если продукт - нетривиальная вещь для создания своего экземпляра, вы также можете высмеять это, выполнив:

testproduct = Mock()
testproduct.<method you want to mock>.return_value = ...
...