Python(单元测试):具有多个输入的Mokeypatching函数

时间:2018-09-07 06:18:59

标签: python python-2.7 mocking

我有以下三行代码:

namespace, kube_config = k8s.get_kube_creds()
kubectl = k8s.Kubectl(kube_config, namespace)
namespace_detail = kubectl.get('ns', namespace)

我正在为此编写单元测试

对于第1行,我有:

 monkeypatch.setattr(k8s, "get_kube_creds", mock_get_kube_creds)

其中

def mock_get_kube_creds():
    return "muffinz_namespace", "~/.kube/config"

对于第2行,我有:

  monkeypatch.setattr(k8s, "Kubectl", mock_kubectl_good)

其中:

 def mock_kubectl_good(*args, **kwargs):
    return Kubectl_Good()

 class Kubectl_Good(object):
     def get(self, ns, namespace):
         return {"metadata": {"labels" : {hipaa_compliant: True}}}

对于第3行,我尝试使用:

 def mock_kubectl_get(self, ns, namespace):
        ns = {"metadata": {"labels" : {hipaa_compliant: True}}}
        return ns
 monkeypatch.setattr(k8s.Kubectl, 'get', mock_kubectl_get)

但这一直在给:

AttributeError: <function mock_kubectl_good at 0x7f86a7cfade8> has no attribute 'get'

mock_kubectl_good定义中有get定义,但它仍然不断抱怨找不到。关于如何模拟此功能的任何指针?我是python嘲笑的新手。

0 个答案:

没有答案