diff options
author | Tim Graham <timograham@gmail.com> | 2016-06-28 11:21:26 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-28 11:21:26 -0400 |
commit | c9ae09addffb839403312131d4251e9d8b454508 (patch) | |
tree | 74913fbe2e90d88e094f8594947ebf313ec5f12f /tests/multiple_database | |
parent | c1b6f554e405fe733e8d80f7e3d77c277810e707 (diff) | |
download | django-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.py | 272 |
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}) |