我怎样才能测试亚马逊 api?

How can I test the amazon api?

我有以下代码。

如何测试函数 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')
    ....

您不测试 API,您使用不同的 AmazonAPI 实现来模拟与 amazon 的交互。

在 python 中,这可以使用 unittest.mock 完成:https://docs.python.org/3/library/unittest.mock.html

自从我在 python 中完成此操作已经很长时间了,但是 iirc 你可以在你的测试类中做这样的事情(未经测试,我改编了文档中的示例):

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

如果 product 是创建一个实例的重要事物,您也可以通过以下方式模拟它:

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