这里我使用单元测试框架和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 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 的任何功能需求。
关于python - 如何模拟金库 hvac.Client() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54326123/