Python 如何模拟vault hvac.Client()方法

Python 如何模拟vault hvac.Client()方法,python,unit-testing,Python,Unit Testing,这里我使用的是unittest框架和Python def getsomevalue(name): client = hvac.Client(url ="http://1.2.3.4:31485",token = "abcdefghijkkk") sampledata= client.read('secret/data/somedata') return sampledata 我所做的就是创建一个模拟hvac客

这里我使用的是unittest框架和Python

def getsomevalue(name):
    client = hvac.Client(url ="http://1.2.3.4:31485",token = "abcdefghijkkk")                               
    sampledata= client.read('secret/data/somedata')
    return sampledata

我所做的就是创建一个模拟hvac客户端类,然后在代码中用补丁替换vault客户端实例

换句话说,它是这样的:

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})
这样做的目的是创建一个magic mock_vault,并替换它可以通过该magic mock找到的所有hvac.Client实例。mock_vault_read是magic mock的一个副作用,本质上说,当您调用magic mock时,调用mock_vault_read函数。这可以根据hvac的任何功能需要进一步定制。

可能的副本