diff options
| author | Johannes Erdfelt <johannes.erdfelt@rackspace.com> | 2012-09-20 17:19:05 +0000 |
|---|---|---|
| committer | Johannes Erdfelt <johannes.erdfelt@rackspace.com> | 2012-09-20 19:37:34 +0000 |
| commit | c82dba22c24cd7cd4d7ce3629da24644414cb374 (patch) | |
| tree | 2e4665ad1fb30baa6b4c935e0674c75844308c7e /nova/testing | |
| parent | 7cdd6c3fb4aeecb4a0441385576206bb17cdecfe (diff) | |
| download | nova-c82dba22c24cd7cd4d7ce3629da24644414cb374.tar.gz nova-c82dba22c24cd7cd4d7ce3629da24644414cb374.tar.xz nova-c82dba22c24cd7cd4d7ce3629da24644414cb374.zip | |
Clarify dangerous use of exceptions in unit tests
Also, update unit tests to use more specific exception where possible
to make auditing easier in the future.
Change-Id: I4906e2f8e3ebacf0587f1471ca8dd46c73edc17a
Diffstat (limited to 'nova/testing')
| -rw-r--r-- | nova/testing/README.rst | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/nova/testing/README.rst b/nova/testing/README.rst index 67fa33d1d..4c341b7ed 100644 --- a/nova/testing/README.rst +++ b/nova/testing/README.rst @@ -54,13 +54,33 @@ Writing Integration Tests TBD -Tests and assertRaises ----------------------- -When asserting that a test should raise an exception, test against the -most specific exception possible. An overly broad exception type (like -Exception) can mask errors in the unit test itself. +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) |
