Merge "Clear created attributes when tearing down tests"
This commit is contained in:
12
HACKING.rst
12
HACKING.rst
@@ -181,18 +181,6 @@ For more information on creating unit tests and utilizing the testing
|
|||||||
infrastructure in OpenStack Nova, please read nova/testing/README.rst.
|
infrastructure in OpenStack Nova, please read nova/testing/README.rst.
|
||||||
|
|
||||||
|
|
||||||
Unit 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.
|
|
||||||
|
|
||||||
Example::
|
|
||||||
|
|
||||||
self.assertRaises(exception.InstanceNotFound, db.instance_get_by_uuid,
|
|
||||||
elevated, instance_uuid)
|
|
||||||
|
|
||||||
|
|
||||||
openstack-common
|
openstack-common
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
|
|||||||
@@ -177,6 +177,12 @@ class TestCase(unittest.TestCase):
|
|||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# Delete attributes that don't start with _ so they don't pin
|
||||||
|
# memory around unnecessarily for the duration of the test
|
||||||
|
# suite
|
||||||
|
for key in [k for k in self.__dict__.keys() if k[0] != '_']:
|
||||||
|
del self.__dict__[key]
|
||||||
|
|
||||||
def flags(self, **kw):
|
def flags(self, **kw):
|
||||||
"""Override flag variables for a test."""
|
"""Override flag variables for a test."""
|
||||||
for k, v in kw.iteritems():
|
for k, v in kw.iteritems():
|
||||||
|
|||||||
@@ -33,6 +33,17 @@ Using Fakes
|
|||||||
|
|
||||||
TBD
|
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
|
Writing Functional Tests
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
@@ -42,3 +53,14 @@ Writing Integration Tests
|
|||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
TBD
|
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.
|
||||||
|
|
||||||
|
Example::
|
||||||
|
|
||||||
|
self.assertRaises(exception.InstanceNotFound, db.instance_get_by_uuid,
|
||||||
|
elevated, instance_uuid)
|
||||||
|
|||||||
@@ -135,8 +135,8 @@ class FlatNetworkTestCase(test.TestCase):
|
|||||||
is_admin=False)
|
is_admin=False)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
super(FlatNetworkTestCase, self).tearDown()
|
|
||||||
self.network.instance_dns_manager.delete_dns_file()
|
self.network.instance_dns_manager.delete_dns_file()
|
||||||
|
super(FlatNetworkTestCase, self).tearDown()
|
||||||
|
|
||||||
def test_get_instance_nw_info(self):
|
def test_get_instance_nw_info(self):
|
||||||
fake_get_instance_nw_info = fake_network.fake_get_instance_nw_info
|
fake_get_instance_nw_info = fake_network.fake_get_instance_nw_info
|
||||||
@@ -1277,8 +1277,8 @@ class FloatingIPTestCase(test.TestCase):
|
|||||||
is_admin=False)
|
is_admin=False)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
super(FloatingIPTestCase, self).tearDown()
|
|
||||||
self.network.floating_dns_manager.delete_dns_file()
|
self.network.floating_dns_manager.delete_dns_file()
|
||||||
|
super(FloatingIPTestCase, self).tearDown()
|
||||||
|
|
||||||
def test_double_deallocation(self):
|
def test_double_deallocation(self):
|
||||||
instance_ref = db.api.instance_create(self.context,
|
instance_ref = db.api.instance_create(self.context,
|
||||||
@@ -1480,8 +1480,8 @@ class InstanceDNSTestCase(test.TestCase):
|
|||||||
is_admin=False)
|
is_admin=False)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
super(InstanceDNSTestCase, self).tearDown()
|
|
||||||
self.network.instance_dns_manager.delete_dns_file()
|
self.network.instance_dns_manager.delete_dns_file()
|
||||||
|
super(InstanceDNSTestCase, self).tearDown()
|
||||||
|
|
||||||
def test_dns_domains_private(self):
|
def test_dns_domains_private(self):
|
||||||
zone1 = 'testzone'
|
zone1 = 'testzone'
|
||||||
@@ -1525,10 +1525,10 @@ class LdapDNSTestCase(test.TestCase):
|
|||||||
self.driver.create_domain(domain2)
|
self.driver.create_domain(domain2)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
super(LdapDNSTestCase, self).tearDown()
|
|
||||||
self.driver.delete_domain(domain1)
|
self.driver.delete_domain(domain1)
|
||||||
self.driver.delete_domain(domain2)
|
self.driver.delete_domain(domain2)
|
||||||
sys.modules['ldap'] = self.saved_ldap
|
sys.modules['ldap'] = self.saved_ldap
|
||||||
|
super(LdapDNSTestCase, self).tearDown()
|
||||||
|
|
||||||
def test_ldap_dns_domains(self):
|
def test_ldap_dns_domains(self):
|
||||||
domains = self.driver.get_domains()
|
domains = self.driver.get_domains()
|
||||||
|
|||||||
Reference in New Issue
Block a user