我编写了一些调用SalesforceIQ API的代码。我现在正在尝试对我的代码进行单元测试(为每个函数编写单元测试)。我有点不确定如何解决这个问题,因为我需要做某些事情以避免进行API调用。
这是我正在尝试测试的一个示例函数:
def update_contact(name, phone, address, contact_id):
contact = Contact(contact_id)
set_contact_fields(contact, name, phone, address)
return contact.update()
contact.update()
是API调用。因此,我仍然希望避免在contact.update()
测试update_contact
时更新这三个字段(姓名,电话,地址)。
如何解决这个问题?
谢谢!
答案 0 :(得分:1)
您可以使用patch
(python2中的mock.patch
,python3中的unittest.mock.patch
来修补该方法:
@patch.object(Contact, 'update')
def test_api_call(self, update):
# "update" is the patched method, instace of `MagicMock`
update_contact('name', 'phone', 'address', 'contact_id')
update.assert_called_once_with()
答案 1 :(得分:0)
__repr__()
对象是否有__str__()
或Contact
方法?如果没有,为什么不写一个?然后你可以打印contact
并查看它是什么。如果您想进一步自动化测试,或者使用它返回的字符串执行其他操作。