summaryrefslogtreecommitdiff
path: root/tests/multiple_database
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2016-06-28 11:21:26 -0400
committerGitHub <noreply@github.com>2016-06-28 11:21:26 -0400
commitc9ae09addffb839403312131d4251e9d8b454508 (patch)
tree74913fbe2e90d88e094f8594947ebf313ec5f12f /tests/multiple_database
parentc1b6f554e405fe733e8d80f7e3d77c277810e707 (diff)
downloaddjango-c9ae09addffb839403312131d4251e9d8b454508.tar.gz
Replaced use of TestCase.fail() with assertRaises().
Also removed try/except/fail antipattern that hides exceptions.
Diffstat (limited to 'tests/multiple_database')
-rw-r--r--tests/multiple_database/tests.py272
1 files changed, 101 insertions, 171 deletions
diff --git a/tests/multiple_database/tests.py b/tests/multiple_database/tests.py
index 5d30cee891..dc714b7119 100644
--- a/tests/multiple_database/tests.py
+++ b/tests/multiple_database/tests.py
@@ -1115,10 +1115,7 @@ class RouterTestCase(TestCase):
mark = Person.objects.using('other').create(name="Mark Pilgrim")
# Set a foreign key with an object from a different database
- try:
- dive.editor = marty
- except ValueError:
- self.fail("Assignment across primary/replica databases with a common source should be ok")
+ dive.editor = marty
# Database assignments of original objects haven't changed...
self.assertEqual(marty._state.db, 'default')
@@ -1131,20 +1128,14 @@ class RouterTestCase(TestCase):
self.assertEqual(dive._state.db, 'default')
# ...and the source database now has a copy of any object saved
- try:
- Book.objects.using('default').get(title='Dive into Python').delete()
- except Book.DoesNotExist:
- self.fail('Source database should have a copy of saved object')
+ Book.objects.using('default').get(title='Dive into Python').delete()
# This isn't a real primary/replica database, so restore the original from other
dive = Book.objects.using('other').get(title='Dive into Python')
self.assertEqual(dive._state.db, 'other')
# Set a foreign key set with an object from a different database
- try:
- marty.edited.set([pro, dive], bulk=False)
- except ValueError:
- self.fail("Assignment across primary/replica databases with a common source should be ok")
+ marty.edited.set([pro, dive], bulk=False)
# Assignment implies a save, so database assignments of original objects have changed...
self.assertEqual(marty._state.db, 'default')
@@ -1153,20 +1144,14 @@ class RouterTestCase(TestCase):
self.assertEqual(mark._state.db, 'other')
# ...and the source database now has a copy of any object saved
- try:
- Book.objects.using('default').get(title='Dive into Python').delete()
- except Book.DoesNotExist:
- self.fail('Source database should have a copy of saved object')
+ Book.objects.using('default').get(title='Dive into Python').delete()
# This isn't a real primary/replica database, so restore the original from other
dive = Book.objects.using('other').get(title='Dive into Python')
self.assertEqual(dive._state.db, 'other')
# Add to a foreign key set with an object from a different database
- try:
- marty.edited.add(dive, bulk=False)
- except ValueError:
- self.fail("Assignment across primary/replica databases with a common source should be ok")
+ marty.edited.add(dive, bulk=False)
# Add implies a save, so database assignments of original objects have changed...
self.assertEqual(marty._state.db, 'default')
@@ -1175,10 +1160,7 @@ class RouterTestCase(TestCase):
self.assertEqual(mark._state.db, 'other')
# ...and the source database now has a copy of any object saved
- try:
- Book.objects.using('default').get(title='Dive into Python').delete()
- except Book.DoesNotExist:
- self.fail('Source database should have a copy of saved object')
+ Book.objects.using('default').get(title='Dive into Python').delete()
# This isn't a real primary/replica database, so restore the original from other
dive = Book.objects.using('other').get(title='Dive into Python')
@@ -1261,10 +1243,7 @@ class RouterTestCase(TestCase):
self.assertEqual(Person.objects.using('other').count(), 2)
# Set a m2m set with an object from a different database
- try:
- marty.book_set.set([pro, dive])
- except ValueError:
- self.fail("Assignment across primary/replica databases with a common source should be ok")
+ marty.book_set.set([pro, dive])
# Database assignments don't change
self.assertEqual(marty._state.db, 'default')
@@ -1280,10 +1259,7 @@ class RouterTestCase(TestCase):
Book.authors.through.objects.using('default').delete()
# Add to an m2m with an object from a different database
- try:
- marty.book_set.add(dive)
- except ValueError:
- self.fail("Assignment across primary/replica databases with a common source should be ok")
+ marty.book_set.add(dive)
# Database assignments don't change
self.assertEqual(marty._state.db, 'default')
@@ -1299,10 +1275,7 @@ class RouterTestCase(TestCase):
Book.authors.through.objects.using('default').delete()
# Set a reverse m2m with an object from a different database
- try:
- dive.authors.set([mark, marty])
- except ValueError:
- self.fail("Assignment across primary/replica databases with a common source should be ok")
+ dive.authors.set([mark, marty])
# Database assignments don't change
self.assertEqual(marty._state.db, 'default')
@@ -1321,10 +1294,7 @@ class RouterTestCase(TestCase):
self.assertEqual(Book.authors.through.objects.using('other').count(), 0)
# Add to a reverse m2m with an object from a different database
- try:
- dive.authors.add(marty)
- except ValueError:
- self.fail("Assignment across primary/replica databases with a common source should be ok")
+ dive.authors.add(marty)
# Database assignments don't change
self.assertEqual(marty._state.db, 'default')
@@ -1359,10 +1329,7 @@ class RouterTestCase(TestCase):
# Set a one-to-one relation with an object from a different database
alice_profile = UserProfile.objects.create(user=alice, flavor='chocolate')
- try:
- bob.userprofile = alice_profile
- except ValueError:
- self.fail("Assignment across primary/replica databases with a common source should be ok")
+ bob.userprofile = alice_profile
# Database assignments of original objects haven't changed...
self.assertEqual(alice._state.db, 'default')
@@ -1390,10 +1357,7 @@ class RouterTestCase(TestCase):
'other').create(source="Python Weekly", content_object=dive)
# Set a generic foreign key with an object from a different database
- try:
- review1.content_object = dive
- except ValueError:
- self.fail("Assignment across primary/replica databases with a common source should be ok")
+ review1.content_object = dive
# Database assignments of original objects haven't changed...
self.assertEqual(pro._state.db, 'default')
@@ -1407,20 +1371,14 @@ class RouterTestCase(TestCase):
self.assertEqual(dive._state.db, 'default')
# ...and the source database now has a copy of any object saved
- try:
- Book.objects.using('default').get(title='Dive into Python').delete()
- except Book.DoesNotExist:
- self.fail('Source database should have a copy of saved object')
+ Book.objects.using('default').get(title='Dive into Python').delete()
# This isn't a real primary/replica database, so restore the original from other
dive = Book.objects.using('other').get(title='Dive into Python')
self.assertEqual(dive._state.db, 'other')
# Add to a generic foreign key set with an object from a different database
- try:
- dive.reviews.add(review1)
- except ValueError:
- self.fail("Assignment across primary/replica databases with a common source should be ok")
+ dive.reviews.add(review1)
# Database assignments of original objects haven't changed...
self.assertEqual(pro._state.db, 'default')
@@ -1433,10 +1391,7 @@ class RouterTestCase(TestCase):
self.assertEqual(dive._state.db, 'default')
# ...and the source database now has a copy of any object saved
- try:
- Book.objects.using('default').get(title='Dive into Python').delete()
- except Book.DoesNotExist:
- self.fail('Source database should have a copy of saved object')
+ Book.objects.using('default').get(title='Dive into Python').delete()
# BUT! if you assign a FK object when the base object hasn't
# been saved yet, you implicitly assign the database for the
@@ -1601,20 +1556,14 @@ class FixtureTestCase(TestCase):
def test_fixture_loading(self):
"Multi-db fixtures are loaded correctly"
# Check that "Pro Django" exists on the default database, but not on other database
- try:
- Book.objects.get(title="Pro Django")
- Book.objects.using('default').get(title="Pro Django")
- except Book.DoesNotExist:
- self.fail('"Pro Django" should exist on default database')
+ Book.objects.get(title="Pro Django")
+ Book.objects.using('default').get(title="Pro Django")
with self.assertRaises(Book.DoesNotExist):
Book.objects.using('other').get(title="Pro Django")
# Check that "Dive into Python" exists on the default database, but not on other database
- try:
- Book.objects.using('other').get(title="Dive into Python")
- except Book.DoesNotExist:
- self.fail('"Dive into Python" should exist on other database')
+ Book.objects.using('other').get(title="Dive into Python")
with self.assertRaises(Book.DoesNotExist):
Book.objects.get(title="Dive into Python")
@@ -1622,12 +1571,9 @@ class FixtureTestCase(TestCase):
Book.objects.using('default').get(title="Dive into Python")
# Check that "Definitive Guide" exists on the both databases
- try:
- Book.objects.get(title="The Definitive Guide to Django")
- Book.objects.using('default').get(title="The Definitive Guide to Django")
- Book.objects.using('other').get(title="The Definitive Guide to Django")
- except Book.DoesNotExist:
- self.fail('"The Definitive Guide to Django" should exist on both databases')
+ Book.objects.get(title="The Definitive Guide to Django")
+ Book.objects.using('default').get(title="The Definitive Guide to Django")
+ Book.objects.using('other').get(title="The Definitive Guide to Django")
@override_settings(DATABASE_ROUTERS=[AntiPetRouter()])
def test_pseudo_empty_fixtures(self):
@@ -1906,210 +1852,194 @@ class RouteForWriteTestCase(TestCase):
def test_fk_delete(self):
owner = Person.objects.create(name='Someone')
pet = Pet.objects.create(name='fido', owner=owner)
- try:
+ with self.assertRaises(RouterUsed) as cm:
with self.override_router():
pet.owner.delete()
- self.fail('db_for_write() not invoked on router')
- except RouterUsed as e:
- self.assertEqual(e.mode, RouterUsed.WRITE)
- self.assertEqual(e.model, Person)
- self.assertEqual(e.hints, {'instance': owner})
+ e = cm.exception
+ self.assertEqual(e.mode, RouterUsed.WRITE)
+ self.assertEqual(e.model, Person)
+ self.assertEqual(e.hints, {'instance': owner})
def test_reverse_fk_delete(self):
owner = Person.objects.create(name='Someone')
to_del_qs = owner.pet_set.all()
- try:
+ with self.assertRaises(RouterUsed) as cm:
with self.override_router():
to_del_qs.delete()
- self.fail('db_for_write() not invoked on router')
- except RouterUsed as e:
- self.assertEqual(e.mode, RouterUsed.WRITE)
- self.assertEqual(e.model, Pet)
- self.assertEqual(e.hints, {'instance': owner})
+ e = cm.exception
+ self.assertEqual(e.mode, RouterUsed.WRITE)
+ self.assertEqual(e.model, Pet)
+ self.assertEqual(e.hints, {'instance': owner})
def test_reverse_fk_get_or_create(self):
owner = Person.objects.create(name='Someone')
- try:
+ with self.assertRaises(RouterUsed) as cm:
with self.override_router():
owner.pet_set.get_or_create(name='fido')
- self.fail('db_for_write() not invoked on router')
- except RouterUsed as e:
- self.assertEqual(e.mode, RouterUsed.WRITE)
- self.assertEqual(e.model, Pet)
- self.assertEqual(e.hints, {'instance': owner})
+ e = cm.exception
+ self.assertEqual(e.mode, RouterUsed.WRITE)
+ self.assertEqual(e.model, Pet)
+ self.assertEqual(e.hints, {'instance': owner})
def test_reverse_fk_update(self):
owner = Person.objects.create(name='Someone')
Pet.objects.create(name='fido', owner=owner)
- try:
+ with self.assertRaises(RouterUsed) as cm:
with self.override_router():
owner.pet_set.update(name='max')
- self.fail('db_for_write() not invoked on router')
- except RouterUsed as e:
- self.assertEqual(e.mode, RouterUsed.WRITE)
- self.assertEqual(e.model, Pet)
- self.assertEqual(e.hints, {'instance': owner})
+ e = cm.exception
+ self.assertEqual(e.mode, RouterUsed.WRITE)
+ self.assertEqual(e.model, Pet)
+ self.assertEqual(e.hints, {'instance': owner})
def test_m2m_add(self):
auth = Person.objects.create(name='Someone')
book = Book.objects.create(title="Pro Django",
published=datetime.date(2008, 12, 16))
- try:
+ with self.assertRaises(RouterUsed) as cm:
with self.override_router():
book.authors.add(auth)
- self.fail('db_for_write() not invoked on router')
- except RouterUsed as e:
- self.assertEqual(e.mode, RouterUsed.WRITE)
- self.assertEqual(e.model, Book.authors.through)
- self.assertEqual(e.hints, {'instance': book})
+ e = cm.exception
+ self.assertEqual(e.mode, RouterUsed.WRITE)
+ self.assertEqual(e.model, Book.authors.through)
+ self.assertEqual(e.hints, {'instance': book})
def test_m2m_clear(self):
auth = Person.objects.create(name='Someone')
book = Book.objects.create(title="Pro Django",
published=datetime.date(2008, 12, 16))
book.authors.add(auth)
- try:
+ with self.assertRaises(RouterUsed) as cm:
with self.override_router():
book.authors.clear()
- self.fail('db_for_write() not invoked on router')
- except RouterUsed as e:
- self.assertEqual(e.mode, RouterUsed.WRITE)
- self.assertEqual(e.model, Book.authors.through)
- self.assertEqual(e.hints, {'instance': book})
+ e = cm.exception
+ self.assertEqual(e.mode, RouterUsed.WRITE)
+ self.assertEqual(e.model, Book.authors.through)
+ self.assertEqual(e.hints, {'instance': book})
def test_m2m_delete(self):
auth = Person.objects.create(name='Someone')
book = Book.objects.create(title="Pro Django",
published=datetime.date(2008, 12, 16))
book.authors.add(auth)
- try:
+ with self.assertRaises(RouterUsed) as cm:
with self.override_router():
book.authors.all().delete()
- self.fail('db_for_write() not invoked on router')
- except RouterUsed as e:
- self.assertEqual(e.mode, RouterUsed.WRITE)
- self.assertEqual(e.model, Person)
- self.assertEqual(e.hints, {'instance': book})
+ e = cm.exception
+ self.assertEqual(e.mode, RouterUsed.WRITE)
+ self.assertEqual(e.model, Person)
+ self.assertEqual(e.hints, {'instance': book})
def test_m2m_get_or_create(self):
Person.objects.create(name='Someone')
book = Book.objects.create(title="Pro Django",
published=datetime.date(2008, 12, 16))
- try:
+ with self.assertRaises(RouterUsed) as cm:
with self.override_router():
book.authors.get_or_create(name='Someone else')
- self.fail('db_for_write() not invoked on router')
- except RouterUsed as e:
- self.assertEqual(e.mode, RouterUsed.WRITE)
- self.assertEqual(e.model, Book)
- self.assertEqual(e.hints, {'instance': book})
+ e = cm.exception
+ self.assertEqual(e.mode, RouterUsed.WRITE)
+ self.assertEqual(e.model, Book)
+ self.assertEqual(e.hints, {'instance': book})
def test_m2m_remove(self):
auth = Person.objects.create(name='Someone')
book = Book.objects.create(title="Pro Django",
published=datetime.date(2008, 12, 16))
book.authors.add(auth)
- try:
+ with self.assertRaises(RouterUsed) as cm:
with self.override_router():
book.authors.remove(auth)
- self.fail('db_for_write() not invoked on router')
- except RouterUsed as e:
- self.assertEqual(e.mode, RouterUsed.WRITE)
- self.assertEqual(e.model, Book.authors.through)
- self.assertEqual(e.hints, {'instance': book})
+ e = cm.exception
+ self.assertEqual(e.mode, RouterUsed.WRITE)
+ self.assertEqual(e.model, Book.authors.through)
+ self.assertEqual(e.hints, {'instance': book})
def test_m2m_update(self):
auth = Person.objects.create(name='Someone')
book = Book.objects.create(title="Pro Django",
published=datetime.date(2008, 12, 16))
book.authors.add(auth)
- try:
+ with self.assertRaises(RouterUsed) as cm:
with self.override_router():
book.authors.all().update(name='Different')
- self.fail('db_for_write() not invoked on router')
- except RouterUsed as e:
- self.assertEqual(e.mode, RouterUsed.WRITE)
- self.assertEqual(e.model, Person)
- self.assertEqual(e.hints, {'instance': book})
+ e = cm.exception
+ self.assertEqual(e.mode, RouterUsed.WRITE)
+ self.assertEqual(e.model, Person)
+ self.assertEqual(e.hints, {'instance': book})
def test_reverse_m2m_add(self):
auth = Person.objects.create(name='Someone')
book = Book.objects.create(title="Pro Django",
published=datetime.date(2008, 12, 16))
- try:
+ with self.assertRaises(RouterUsed) as cm:
with self.override_router():
auth.book_set.add(book)
- self.fail('db_for_write() not invoked on router')
- except RouterUsed as e:
- self.assertEqual(e.mode, RouterUsed.WRITE)
- self.assertEqual(e.model, Book.authors.through)
- self.assertEqual(e.hints, {'instance': auth})
+ e = cm.exception
+ self.assertEqual(e.mode, RouterUsed.WRITE)
+ self.assertEqual(e.model, Book.authors.through)
+ self.assertEqual(e.hints, {'instance': auth})
def test_reverse_m2m_clear(self):
auth = Person.objects.create(name='Someone')
book = Book.objects.create(title="Pro Django",
published=datetime.date(2008, 12, 16))
book.authors.add(auth)
- try:
+ with self.assertRaises(RouterUsed) as cm:
with self.override_router():
auth.book_set.clear()
- self.fail('db_for_write() not invoked on router')
- except RouterUsed as e:
- self.assertEqual(e.mode, RouterUsed.WRITE)
- self.assertEqual(e.model, Book.authors.through)
- self.assertEqual(e.hints, {'instance': auth})
+ e = cm.exception
+ self.assertEqual(e.mode, RouterUsed.WRITE)
+ self.assertEqual(e.model, Book.authors.through)
+ self.assertEqual(e.hints, {'instance': auth})
def test_reverse_m2m_delete(self):
auth = Person.objects.create(name='Someone')
book = Book.objects.create(title="Pro Django",
published=datetime.date(2008, 12, 16))
book.authors.add(auth)
- try:
+ with self.assertRaises(RouterUsed) as cm:
with self.override_router():
auth.book_set.all().delete()
- self.fail('db_for_write() not invoked on router')
- except RouterUsed as e:
- self.assertEqual(e.mode, RouterUsed.WRITE)
- self.assertEqual(e.model, Book)
- self.assertEqual(e.hints, {'instance': auth})
+ e = cm.exception
+ self.assertEqual(e.mode, RouterUsed.WRITE)
+ self.assertEqual(e.model, Book)
+ self.assertEqual(e.hints, {'instance': auth})
def test_reverse_m2m_get_or_create(self):
auth = Person.objects.create(name='Someone')
Book.objects.create(title="Pro Django",
published=datetime.date(2008, 12, 16))
- try:
+ with self.assertRaises(RouterUsed) as cm:
with self.override_router():
auth.book_set.get_or_create(title="New Book", published=datetime.datetime.now())
- self.fail('db_for_write() not invoked on router')
- except RouterUsed as e:
- self.assertEqual(e.mode, RouterUsed.WRITE)
- self.assertEqual(e.model, Person)
- self.assertEqual(e.hints, {'instance': auth})
+ e = cm.exception
+ self.assertEqual(e.mode, RouterUsed.WRITE)
+ self.assertEqual(e.model, Person)
+ self.assertEqual(e.hints, {'instance': auth})
def test_reverse_m2m_remove(self):
auth = Person.objects.create(name='Someone')
book = Book.objects.create(title="Pro Django",
published=datetime.date(2008, 12, 16))
book.authors.add(auth)
- try:
+ with self.assertRaises(RouterUsed) as cm:
with self.override_router():
auth.book_set.remove(book)
- self.fail('db_for_write() not invoked on router')
- except RouterUsed as e:
- self.assertEqual(e.mode, RouterUsed.WRITE)
- self.assertEqual(e.model, Book.authors.through)
- self.assertEqual(e.hints, {'instance': auth})
+ e = cm.exception
+ self.assertEqual(e.mode, RouterUsed.WRITE)
+ self.assertEqual(e.model, Book.authors.through)
+ self.assertEqual(e.hints, {'instance': auth})
def test_reverse_m2m_update(self):
auth = Person.objects.create(name='Someone')
book = Book.objects.create(title="Pro Django",
published=datetime.date(2008, 12, 16))
book.authors.add(auth)
- try:
+ with self.assertRaises(RouterUsed) as cm:
with self.override_router():
auth.book_set.all().update(title='Different')
- self.fail('db_for_write() not invoked on router')
- except RouterUsed as e:
- self.assertEqual(e.mode, RouterUsed.WRITE)
- self.assertEqual(e.model, Book)
- self.assertEqual(e.hints, {'instance': auth})
+ e = cm.exception
+ self.assertEqual(e.mode, RouterUsed.WRITE)
+ self.assertEqual(e.model, Book)
+ self.assertEqual(e.hints, {'instance': auth})