Fakes

fakes 模块旨在帮助使用 OpenStack SDK 的应用程序开发者进行单元测试。它提供了一些辅助工具来生成假的 ResourceProxy 实例。这些假对象不需要建立连接,允许您验证您的应用程序是否使用 ResourceProxy 实例的有效属性和方法。

openstack.test.fakes.generate_fake_resource(resource_type, **attrs)

生成一个假的资源

示例用法

>>> from openstack.compute.v2 import server
>>> from openstack.test import fakes
>>> fakes.generate_fake_resource(server.Server)
openstack.compute.v2.server.Server(...)
参数:
  • resource_type – 对象类

  • attrs – 要设置在资源上的可选属性

返回值:

一个填充了预期类型假值的 resource_type 类实例

引发:

NotImplementedError – 如果资源属性指定了一个无法自动生成的 typelist_type

openstack.test.fakes.generate_fake_resources(resource_type, count=1, attrs=None)

生成给定数量的假资源实体

示例用法

>>> 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>
参数:
  • resource_type – 对象类

  • count – 要返回的对象数量

  • attrs – 要设置到每个实例中的属性值

返回值:

填充了预期类型假值的 resource_type 类实例生成器。

openstack.test.fakes.generate_fake_proxy(service, api_version=None)

为给定的服务类型生成一个假的代理

示例用法

>>> 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'?
参数:
  • service (ServiceDescription) – 要生成假代理的服务。

  • api_version (intNone) – 要生成假代理的 API 版本。这应该是一个主版本,必须受 openstacksdk 支持,如提供的 servicesupported_versions 属性中指定。如果 openstacksdk 支持给定服务的多个 API 版本,则只需要此参数。

引发:

ValueError – 如果 service 不是有效的 ServiceDescription,或者如果 api_version 不受支持

返回值:

指定服务类型和 API 版本的 Proxy 实现的自动规格化模拟