我想测试ReadAdwords
类方法get_keywords
。下面的代码可以工作,但测试抛出以下错误:AttributeError: Mock object has no attribute 'get'
source code表示GetService()
返回“一个googleads.common.GoogleSoapService实例,该实例的头和代理配置为可供使用。”
我在源代码中的任何地方都找不到def get(
,不仅仅是在返回的soap服务实例上。这是怎么回事?有没有办法在仍然使用autospec=True
的情况下修补这个问题
PHP库中等价的get
方法是here
我在搜索堆栈溢出时发现的唯一类似问题是this
班级:
class ReadAdwords:
def __init__(self, adwords_client):
self.adwords_client = adwords_client
def get_keywords(self, selector):
ad_group_criterion_service = self.adwords_client.GetService(
"AdGroupCriterionService", version="v201809"
)
return ad_group_criterion_service.get(selector)
测试:
@patch("googleads.common.GoogleSoapService", autospec=True)
@patch("googleads.adwords.AdWordsClient", autospec=True)
def test_get_keywords(mock_Adwords_client, mock_google_soap_service):
read_adwords = ReadAdwords(mock_Adwords_client)
mock_Adwords_client.GetService.return_value = mock_google_soap_service
read_adwords.get_keywords("a string")
mock_Adwords_client.GetService.assert_called_once()
mock_google_soap_service.get.assert_called_once()
目前没有回答
相关问题 更多 >
编程相关推荐