You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nova/nova/tests/unit
Balazs Gibizer 15b9e81d37
Simplfy test setup for TestNovaMigrations* tests
4 years ago
..
api Merge "Keep attach_mode as top-level field in _translate_attachment_ref" 4 years ago
cmd Add nova-status upgrade check for minimum required cinder API version 4 years ago
compute Merge "Keep attach_mode as top-level field in _translate_attachment_ref" 4 years ago
conductor Remove unused param from _fill_provider_mapping 4 years ago
conf
console Stop handling cells v1 for console authentication 4 years ago
consoleauth Stop handling cells v1 for console authentication 4 years ago
db Simplfy test setup for TestNovaMigrations* tests 4 years ago
fake_loadables
image Bump to hacking 1.1.0 4 years ago
keymgr
network Remove mox in unit/network/test_neutronv2.py (12) 4 years ago
notifications Microversion 2.73: Support adding the reason behind a server lock 4 years ago
objects Merge "Add get_counts() to InstanceMappingList" 4 years ago
pci Move selective patching of open() to nova.test for reuse 4 years ago
privsep Improve test coverage of nova.privsep.utils. 4 years ago
scheduler Merge "Add get_usages_counts_for_quota to SchedulerReportClient" 4 years ago
servicegroup Fix deprecation warning for threadgroup.add_timer 4 years ago
ssl_cert
virt Merge "[ironic] Don't remove instance info twice in destroy" 4 years ago
volume Keep attach_mode as top-level field in _translate_attachment_ref 4 years ago
README.rst
__init__.py
cast_as_call.py
conf_fixture.py
fake_block_device.py Use uuidsentinel from oslo.utils 4 years ago
fake_build_request.py Use uuidsentinel from oslo.utils 4 years ago
fake_console_auth_token.py Use uuidsentinel from oslo.utils 4 years ago
fake_crypto.py
fake_diagnostics.py
fake_flavor.py
fake_hosts.py
fake_instance.py
fake_ldap.py
fake_network.py Use uuidsentinel from oslo.utils 4 years ago
fake_network_cache_model.py
fake_notifier.py Fix jsonutils.to_primitive UserWarning 4 years ago
fake_pci_device_pools.py
fake_policy.py Remove '/os-cells' REST APIs 4 years ago
fake_processutils.py
fake_request_spec.py Fix resetting non-persistent fields when saving obj 4 years ago
fake_requests.py
fake_server_actions.py
fake_volume.py Use uuidsentinel from oslo.utils 4 years ago
fake_xvp_console_proxy.py
image_fixtures.py Merge image_size extension response into image view builder 4 years ago
matchers.py fix bug with XML matcher handling missing children 4 years ago
policy_fixture.py Delete the placement code 4 years ago
test_api_validation.py Remove '/os-cells' REST APIs 4 years ago
test_availability_zones.py Always pass HostAPI to get_availability_zones 4 years ago
test_baserpc.py
test_block_device.py Add method to generate device names universally 4 years ago
test_cache.py
test_cinder.py Make [cinder]/catalog_info no longer require a service_name 4 years ago
test_conf.py Delete the placement code 4 years ago
test_configdrive2.py
test_context.py Revert "Fix target_cell usage for scatter_gather_cells" 4 years ago
test_crypto.py
test_exception.py Convert exception messages to strings 4 years ago
test_fake_notifier.py Raise error on timeout in wait_for_versioned_notifications 4 years ago
test_fixtures.py Fix SynchronousThreadPoolExecutorFixture mock of Future 4 years ago
test_flavors.py Remove deprecated 'default_flavor' config option 4 years ago
test_hacking.py Bump to hacking 1.1.0 4 years ago
test_hooks.py
test_identity.py
test_instance_types_extra_specs.py
test_iptables_network.py
test_ipv6.py
test_json_ref.py
test_loadables.py
test_matchers.py fix bug with XML matcher handling missing children 4 years ago
test_metadata.py Improve metadata performance 4 years ago
test_notifications.py Remove deprecated 'default_flavor' config option 4 years ago
test_notifier.py
test_nova_manage.py Add --before to nova-manage db archive_deleted_rows 4 years ago
test_policy.py Remove cells code 4 years ago
test_profiler.py Remove cells code 4 years ago
test_quota.py Merge "Count instances from mappings and cores/ram from placement" 4 years ago
test_rpc.py test_rpc: Stop f****** with global state 4 years ago
test_safeutils.py
test_service.py Move conductor wait_until_ready() delay before manager init 4 years ago
test_service_auth.py
test_test.py Move selective patching of open() to nova.test for reuse 4 years ago
test_test_utils.py
test_utils.py Switch to using os-resource-classes 4 years ago
test_versions.py Move selective patching of open() to nova.test for reuse 4 years ago
test_weights.py Per aggregate scheduling weight 4 years ago
test_wsgi.py
utils.py Bump to hacking 1.1.0 4 years ago

README.rst

OpenStack Nova Testing Infrastructure

This README file attempts to provide current and prospective contributors with everything they need to know in order to start creating unit tests for nova.

Note: the content for the rest of this file will be added as the work items in the following blueprint are completed: https://blueprints.launchpad.net/nova/+spec/consolidate-testing-infrastructure

Test Types: Unit vs. Functional vs. Integration

TBD

Writing Unit Tests

TBD

Using Fakes

TBD

test.TestCase

The TestCase class from nova.test (generally imported as test) will automatically manage self.stubs using the stubout module and self.mox using the mox module during the setUp step. They will automatically verify and clean up during the tearDown step.

If using test.TestCase, calling the super class setUp is required and calling the super class tearDown is required to be last if tearDown is overridden.

Writing Functional Tests

TBD

Writing Integration Tests

TBD

Tests and Exceptions

A properly written test asserts that particular behavior occurs. This can be a success condition or a failure condition, including an exception. When asserting that a particular exception is raised, the most specific exception possible should be used.

In particular, testing for Exception being raised is almost always a mistake since it will match (almost) every exception, even those unrelated to the exception intended to be tested.

This applies to catching exceptions manually with a try/except block, or using assertRaises().

Example:

self.assertRaises(exception.InstanceNotFound, db.instance_get_by_uuid,
                  elevated, instance_uuid)

If a stubbed function/method needs a generic exception for testing purposes, test.TestingException is available.

Example:

def stubbed_method(self):
    raise test.TestingException()
self.stubs.Set(cls, 'inner_method', stubbed_method)

obj = cls()
self.assertRaises(test.TestingException, obj.outer_method)

Stubbing and Mocking

Whenever possible, tests SHOULD NOT stub and mock out the same function.

If it's unavoidable, tests SHOULD define stubs before mocks since the TestCase cleanup routine will un-mock before un-stubbing. Doing otherwise results in a test that leaks stubbed functions, causing hard-to-debug interference between tests1.

If a mock must take place before a stub, any stubs after the mock call MUST be manually unset using self.cleanUp calls within the test.


  1. https://bugs.launchpad.net/nova/+bug/1180671↩︎