0
Я пытаюсь проверить, был ли вызван макет объекта с другим макетным объектом.Тестирование, если mock был вызван с другим макетом
@patch(__name__ + '.xero_helper.PublicCredentials')
@patch(__name__ + '.xero_helper.Xero')
def testGetValidPublicXeroInstance(self, XeroMock, CredentialsMock):
xero_helper.get_xero_instance('abc') # Do relevant stuff
CredentialsMock.assert_called_with(**org.oauth_credentials) # OK
XeroMock.assert_called_once() # OK
XeroMock.assert_called_with(CredentialsMock) # Not OK
Первые два assert
сек проход, в то время как последняя дает
AssertionError: Expected call: Xero(<MagicMock name='PublicCredentials' id='4377636560'>)
Actual call: Xero(<MagicMock name='PublicCredentials()' id='4377382544'>)
Что бы правильный способ проверки XeroMock
был вызван с CredentialsMock
?
В будущем, пожалуйста, укажите код испытание тоже; Я могу решить из ошибки утверждения, что проблема, но было бы проще с фактическим кодом (или рабочей заменой для него, который производит тот же вывод). Это называется [MCVE]. –
Еще одна альтернатива может заключаться в реструктуризации кода, так что есть альтернативы способам инжекции чужих, кроме как через '@ patch'. Популярным может быть инъекция зависимости. Возможно, 'get_xero_instance' может принять' ** kwargs' и разрешить вызывающему абоненту создать экземпляр 'CredentialsMock'? – dm03514