diff options
| author | Monty Taylor <mordred@inaugust.com> | 2013-02-11 15:22:24 -0600 |
|---|---|---|
| committer | Monty Taylor <mordred@inaugust.com> | 2013-02-11 19:04:43 -0800 |
| commit | b7714e82fdbede2dfe328eaae0add07f6e2b92c5 (patch) | |
| tree | 5f8d6bf45e4b36ce473b0c68be156599eb6fd05d /nova/tests | |
| parent | f9c4cd90a94516ec05acbb62b13b48af646fa218 (diff) | |
Update docs about testing.
Add an entry to the HACKING file about testr. While in there, noticed a
reference to the now-defunct nova/testing dir. Fixed that, moved the testing
README into nova/tests and remove the nova/testing dir.
Change-Id: Ibf6fb82658ba73eee9123fa53b340d0b72afb292
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/README.rst | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/nova/tests/README.rst b/nova/tests/README.rst new file mode 100644 index 000000000..76b92258a --- /dev/null +++ b/nova/tests/README.rst @@ -0,0 +1,78 @@ +===================================== +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 overriden. + +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) |
