Итак, в основном я создал фиктивный клиентский класс hvac, а затем исправил замену экземпляра клиента хранилища в вашем коде.
другими словами, это что-то вроде этого:
def mock_vault_read(*args, **kwargs):
class MockVault:
def read(self, **kwargs):
return {some_data}
и затем для теста вы можете написать:
@patch("hvac.Client", side_effect=mock_vault_read):
def test_read(self, mock_vault):
name = "test"
result = getsomevalue(name)
self.assertEquals(result, {some_data})
Что он делает, это создает магический макет mock_vault и заменяет все экземпляры hvac.Client, которые он может найти с помощью этого магического макета. Mock_vault_read является побочным эффектом этого магического макета, по сути говоря, когда вы вызываете магический макет, вызывайте функцию mock_vault_read. Это может быть дополнительно настроено для любой функции, необходимой для hvac.