# 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_type` class populated with fake values of expected types

  Raises:

    NotImplementedError – If a resource attribute specifies a `type` or `list_type` that 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_type` class 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

  Example usage:

      >>> import functools
      >>> from openstack.compute import compute_service
      >>> from openstack.compute.v2 import server
      >>> from openstack.test import fakes
      >>> # create the fake proxy
      >>> fake_compute_proxy = fakes.generate_fake_proxy(
      ...    compute_service.ComputeService,
      ... )
      >>> # configure return values for various proxy APIs
      >>> # note that this will generate new fake resources on each invocation
      >>> fake_compute_proxy.get_server.side_effect = functools.partial(
      ...     fakes.generate_fake_resource,
      ...     server.Server,
      ... )
      >>> fake_compute_proxy.servers.side_effect = functools.partial(
      ...     fakes.generate_fake_resources,
      ...     server.Server,
      ... )
      >>> fake_compute_proxy.servers()
      <generator object generate_fake_resources at 0x7f92768dc040>
      >>> 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_versions` attribute of the provided `service`. This is only required if openstacksdk supports multiple API versions for the given service.

  Raises:

    ValueError – if the `service` is not a valid `ServiceDescription` or if `api_version` is not supported

  Returns:

    An autospecced mock of the `Proxy` implementation for the specified service type and API version

this page last updated: 2026-01-16 23:06:19

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.