Fakes¶
The fakes module exists to help application developers
using the OpenStack SDK to unit test their applications. It provides a number
of helper utilities to generate fake Resource and
Proxy instances. These fakes do not require an
established connection and allow you to validate that your application using
valid attributes and methods for both Resource and
Proxy instances.
- openstack.test.fakes.generate_fake_resource(resource_type, **attrs)¶
Generate a fake resource
Example usage:
>>> from openstack.compute.v2 import server >>> from openstack.test import fakes >>> fakes.generate_fake_resource(server.Server) openstack.compute.v2.server.Server(...)
- Parameters:
resource_type – Object class
attrs – Optional attributes to be set on resource
- Returns:
Instance of
resource_typeclass populated with fake values of expected types- Raises:
NotImplementedError – If a resource attribute specifies a
typeorlist_typethat cannot be automatically generated
- openstack.test.fakes.generate_fake_resources(resource_type, count=1, attrs=None)¶
Generate a given number of fake resource entities
Example usage:
>>> from openstack.compute.v2 import server >>> from openstack.test import fakes >>> fakes.generate_fake_resources(server.Server, count=3) <generator object generate_fake_resources at 0x7f075dc65040>
- Parameters:
resource_type – Object class
count – Number of objects to return
attrs – Attribute values to set into each instance
- Returns:
Generator of
resource_typeclass instances populated with fake values of expected types.
- openstack.test.fakes.generate_fake_proxy(service, api_version=None)¶
Generate a fake proxy for the given service type
Proxy methods whose return type annotation is a
Resourcesubclass (or aGenerator/ optional thereof) are automatically configured to return fake resource instances viagenerate_fake_resource()orgenerate_fake_resources(). Return values can still be overridden on the returned mock after the fact.Example usage:
>>> from openstack.compute import compute_service >>> from openstack.compute.v2 import server >>> from openstack.test import fakes >>> fake_compute_proxy = fakes.generate_fake_proxy( ... compute_service.ComputeService, ... ) >>> # get_server is pre-configured; returns a fake Server >>> fake_server = fake_compute_proxy.get_server('some-uuid') >>> isinstance(fake_server, server.Server) True >>> # servers() is pre-configured; yields fake Server instances >>> fake_servers = list(fake_compute_proxy.servers()) >>> isinstance(fake_servers[0], server.Server) True >>> fake_compute_proxy.serverssss() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib64/python3.11/unittest/mock.py", line 653, in __getattr__ raise AttributeError("Mock object has no attribute %r" % name) AttributeError: Mock object has no attribute 'serverssss'. Did you mean: 'server_ips'?
- Parameters:
service (
ServiceDescription) – The service to generate the fake proxy for.api_version (int or None) – The API version to generate the fake proxy for. This should be a major version must be supported by openstacksdk, as specified in the
supported_versionsattribute of the providedservice. This is only required if openstacksdk supports multiple API versions for the given service.
- Raises:
ValueError – if the
serviceis not a validServiceDescriptionor ifapi_versionis not supported- Returns:
An autospecced mock of the
Proxyimplementation for the specified service type and API version