Python 如何模拟vault hvac.Client()方法
这里我使用的是unittest框架和PythonPython 如何模拟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客
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的任何功能需要进一步定制。可能的副本