MockKubernetesApi

class safir.testing.kubernetes.MockKubernetesApi(*args, **kw)

Bases: unittest.mock.Mock

Mock Kubernetes API for testing.

This object simulates (with almost everything left out) the CoreV1Api and CustomObjectApi client objects while keeping simple internal state. It is intended to be used as a mock inside tests.

Methods ending with _for_test are outside of the API and are intended for use by the test suite.

If error_callback is set to a callable, it will be called with the method name and any arguments whenever any Kubernetes API method is called and before it takes any action. This can be used to inject exceptions for test purposes.

Notes

This class is normally not instantiated directly. Instead, call the patch_kubernetes function from a fixture to set up the mock.

Attributes Summary

call_args

call_args_list

call_count

called

mock_calls

return_value

side_effect

Methods Summary

__call__(*args, **kwargs)

Call self as a function.

assert_any_call(*args, **kwargs)

assert the mock has been called with the specified arguments.

assert_called()

assert that the mock was called at least once

assert_called_once()

assert that the mock was called only once.

assert_called_once_with(*args, **kwargs)

assert that the mock was called exactly once and that that call was with the specified arguments.

assert_called_with(*args, **kwargs)

assert that the last call was made with the specified arguments.

assert_has_calls(calls[, any_order])

assert the mock has been called with the specified calls.

assert_not_called()

assert that the mock was never called.

attach_mock(mock, attribute)

Attach a mock as an attribute of this one, replacing its name and parent.

configure_mock(**kwargs)

Set attributes on the mock through keyword arguments.

create_namespaced_config_map(namespace, ...)

create_namespaced_custom_object(group, ...)

create_namespaced_pod(namespace, pod)

create_namespaced_secret(namespace, secret)

delete_namespaced_config_map(name, namespace)

delete_namespaced_pod(name, namespace)

get_all_objects_for_test(kind)

Return all objects of a given kind sorted by namespace and name.

get_namespaced_custom_object(group, version, ...)

list_cluster_custom_object(group, version, ...)

mock_add_spec(spec[, spec_set])

Add a spec to a mock.

patch_namespaced_custom_object_status(group, ...)

patch_namespaced_secret(name, namespace, body)

read_namespaced_pod(name, namespace)

read_namespaced_secret(name, namespace)

replace_namespaced_custom_object(group, ...)

replace_namespaced_secret(name, namespace, ...)

reset_mock([visited, return_value, side_effect])

Restore the mock object to its initial state.

Attributes Documentation

call_args
call_args_list
call_count
called
mock_calls
return_value
side_effect

Methods Documentation

__call__(*args, **kwargs)

Call self as a function.

assert_any_call(*args, **kwargs)

assert the mock has been called with the specified arguments.

The assert passes if the mock has ever been called, unlike assert_called_with and assert_called_once_with that only pass if the call is the most recent one.

assert_called()

assert that the mock was called at least once

assert_called_once()

assert that the mock was called only once.

assert_called_once_with(*args, **kwargs)

assert that the mock was called exactly once and that that call was with the specified arguments.

assert_called_with(*args, **kwargs)

assert that the last call was made with the specified arguments.

Raises an AssertionError if the args and keyword args passed in are different to the last call to the mock.

assert_has_calls(calls, any_order=False)

assert the mock has been called with the specified calls. The mock_calls list is checked for the calls.

If any_order is False (the default) then the calls must be sequential. There can be extra calls before or after the specified calls.

If any_order is True then the calls can be in any order, but they must all appear in mock_calls.

assert_not_called()

assert that the mock was never called.

attach_mock(mock, attribute)

Attach a mock as an attribute of this one, replacing its name and parent. Calls to the attached mock will be recorded in the method_calls and mock_calls attributes of this one.

configure_mock(**kwargs)

Set attributes on the mock through keyword arguments.

Attributes plus return values and side effects can be set on child mocks using standard dot notation and unpacking a dictionary in the method call:

>>> attrs = {'method.return_value': 3, 'other.side_effect': KeyError}
>>> mock.configure_mock(**attrs)
async create_namespaced_config_map(namespace: str, config_map: kubernetes_asyncio.client.models.v1_config_map.V1ConfigMap) None
async create_namespaced_custom_object(group: str, version: str, namespace: str, plural: str, body: Dict[str, Any]) None
async create_namespaced_pod(namespace: str, pod: kubernetes_asyncio.client.models.v1_pod.V1Pod) None
async create_namespaced_secret(namespace: str, secret: kubernetes_asyncio.client.models.v1_secret.V1Secret) None
async delete_namespaced_config_map(name: str, namespace: str) kubernetes_asyncio.client.models.v1_status.V1Status
async delete_namespaced_pod(name: str, namespace: str) kubernetes_asyncio.client.models.v1_status.V1Status
get_all_objects_for_test(kind: str) List[Any]

Return all objects of a given kind sorted by namespace and name.

Parameters

kind (str) – The Kubernetes kind, such as Secret or Pod. This is case-sensitive.

Returns

objects – All objects of that kind found in the mock, sorted by namespace and then name.

Return type

List[typing.Any]

async get_namespaced_custom_object(group: str, version: str, namespace: str, plural: str, name: str) Dict[str, Any]
async list_cluster_custom_object(group: str, version: str, plural: str) Dict[str, List[Dict[str, Any]]]
mock_add_spec(spec, spec_set=False)

Add a spec to a mock. spec can either be an object or a list of strings. Only attributes on the spec can be fetched as attributes from the mock.

If spec_set is True then only attributes on the spec can be set.

async patch_namespaced_custom_object_status(group: str, version: str, namespace: str, plural: str, name: str, body: List[Dict[str, Any]]) Dict[str, Any]
async patch_namespaced_secret(name: str, namespace: str, body: List[Dict[str, Any]]) kubernetes_asyncio.client.models.v1_secret.V1Secret
async read_namespaced_pod(name: str, namespace: str) kubernetes_asyncio.client.models.v1_pod.V1Pod
async read_namespaced_secret(name: str, namespace: str) kubernetes_asyncio.client.models.v1_secret.V1Secret
async replace_namespaced_custom_object(group: str, version: str, namespace: str, plural: str, name: str, body: Dict[str, Any]) None
async replace_namespaced_secret(name: str, namespace: str, secret: kubernetes_asyncio.client.models.v1_secret.V1Secret) None
reset_mock(visited=None, *, return_value=False, side_effect=False)

Restore the mock object to its initial state.