簡體   English   中英

你如何模擬 Python Kube.netes 客戶端 CoreV1Api

[英]How do you mock Python Kubernetes client CoreV1Api

我使用的是 Kube.netes 客戶端: Kube.netes

我的function:

    def __get_gateway_token_secret(self):
    try:
        self.__get_kubernetes_config()
        api = client.CoreV1Api()
        secret = api.read_namespaced_secret(self.secret_name, self.namespace)
        logging.debug(f'Kubernetes secret found: {base64.b64decode(secret.data["value"])}')
    except Exception as e:
        logging.error(f'Error retrieving Kubernetes Secret: {e}')
        raise e
    return secret

單元測試:

@patch.object(K8s, '_K8s__get_kubernetes_config')
def test_get_gateway_token_secret_returns_secret(self, kubernetes_config_mock):
    kubernetes_config_mock.return_value = MagicMock()

    api = client.CoreV1Api()
    test_object = K8s()

    with patch.object(api, 'read_namespaced_secret', return_value='test'):
        result = test_object._K8s__get_gateway_token_secret()

我是 mocking __get_kube.netes_config() 私有方法就好了。 我需要模擬“api.read_namespaced_secret()”調用。 我已經嘗試過如上所示的“with patch.object”,但這是一個實際的調用。 可以嘲笑嗎?

一切(或幾乎一切)都可以模擬:)

在此示例中,您在 CoreV1Api 的實際實例上使用了CoreV1Api方法,但在您的方法__get_gateway_token_secret ,您正在創建一個不同的新CoreV1APi實例。

您應該將補丁應用於 class,而不是實例。 或者重構你的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM