我正在使用 Kubernetes 客戶端:Kubernetes
我的功能:
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()
我在嘲笑 __get_kubernetes_config() 私有方法就好了。我需要模擬“api.read_namespaced_secret()”呼叫。我已經嘗試過如上所示的“with patch.object”,但這是一個實際的呼叫。可以嘲諷嗎?
uj5u.com熱心網友回復:
一切(或幾乎一切)都可以模擬:)
在此示例中,您正在模擬 的實際實體上的CoreV1Api方法,但在您的方法中,__get_gateway_token_secret您正在創建一個獨特的新實體CoreV1APi.
您應該將補丁應用于類,而不是實體。或者重構你的代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/427119.html
標籤:Python 单元测试 Kubernetes
