繁体   English   中英

如何模拟保管库hvac.Client()方法

[英]How to mock vault hvac.Client() method

在这里,我正在使用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})

这是在创建一个魔术模拟mock_vault,并用该魔术模拟替换它可以找到的所有hvac.Client实例。 mock_vault_read是该魔术模拟的side_effect,从本质上讲,当您调用该魔术模拟时,请调用mock_vault_read函数。 可以针对hvac的任何功能对其进行进一步定制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM