Python (модульное тестирование): функции Mokeypatching с несколькими входами - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть эти 3 строки кода:

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'

У меня есть get def в mock_kubectl_good def, но он продолжает жаловаться на то, что его не нашли. Любые указатели о том, как издеваться над этой функцией? Я новичок в издевательствах в Python.

...