![](/img/trans.png)
[英]How to delete statefulsets.apps using Kubernetes Python 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.