python - 如何模拟金库 hvac.Client() 方法

标签 python unit-testing

这里我使用单元测试框架和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/

相关文章:

python - 求曲线中的线性部分和斜率

python - MySQL进程列表历史维护

git - 使用 grunt 运行 Angular.js 时如何修复错误 "Please set env variable CHROME_BIN"

Angular 2/4组件单元测试点击事件不触发变化

javascript - Python (django) 和 Javascript (crypto.js) 中的 PBKDF2 哈希值不一致

Python - 合并来自不同 .csv 文件的数据。合为一

python - 在 Python 中使用决策树进行文本分类

java - 在 Spring 的构建后阶段之前注入(inject) mock

java - 是否有使用 Groovy 进行单元测试(以及集成或回归,如果适用)的情况?

java - 测试 JUnit 和 EclEmma 时遗漏的分支