5
質問はかなり簡単です:私はself.assertRaisesをDjango 1.5ユニットテストで使用することはできません。DjangoユニットテストでassertRaisesを正しく使用するには?
存在しないデータベースからプロバイダーを削除しようとすると、LookupErrorが発生することを確認したいと思います。
ご覧のとおり、プロバイダの削除方法を定義するProviderDAOクラスがあります。 次に、ユニットテストクラスProviderManagerTestsでこのメソッドdelete_provider()を呼び出します。 私はコード内のすべての可能性を概説しましたが、ここで私は答えに来ました(関連する質問の提案を読みましたが、何もそのトリックはありません) 私はPython 2.7.5を使用しています ありがとう!
class ProviderManager(models.Manager):
def delete_provider(self, provider_id):
matching_providers = Provider.objects.filter(providerId=provider_id)
print 'delete provider method matching providers %s ' % matching_providers
print 'delete provider method matching providers %s ' % matching_providers.count()
if matching_providers.count() > 0:
matching_providers.delete()
elif matching_providers.count() == 0:
raise LookupError('No deletion; no providers matching this id')
class ProviderManagerTests(TestCase):
def test_delete_nonexistent_provider(self):
provider_manager = ProviderManager()
someRoles = Role(name='boss')
someRoles.save()
someSpecialties = Specialty(name='senior care')
someSpecialties.save()
provider_manager.delete_provider('398236503462063')
#self.assertIsNone(provider,'provider should be none')
#self.assertTrue(Provider.objects.filter(providerId='123456') == 0)
###self.assertRaises(LookupError,provider_manager.delete_provider, providerId='398236503462063')
#self.assertRaises(LookupError,provider_manager.delete_provider, provider_id='398236503462063')
#self.assertRaises(LookupError,lambda: provider_manager.delete_provider,provider_id='234234234')
#self.assertRaises(LookupError,lambda: provider_manager.delete_provider(provider_id='234234234'))
# with self.assertRaises(LookupError):
# provider_manager.delete_provider(provider_id='398236503462063')
with self.assertRaises(LookupError):
provider_manager.delete_provider('398236503462063')
とスタックトラック:ところで
======================================================================
ERROR: test_delete_nonexistent_provider (edu.tests.ProviderTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/tests.py", line 68, in test_delete_nonexistent_provider
provider_manager.delete_provider('398236503462063')
File "/Users/models.py", line 92, in delete_provider
raise LookupError('No deletion; no providers matching this id')
LookupError: No deletion; no providers matching this id
----------------------------------------------------------------------
Ran 14 tests in 0.306s
FAILED (errors=1)
あなたはあなたの中に別の 'provider_manager.delete_provider( '398236503462063')を'持って'self.assertRaises(..)'ブロック内にないコードです。 – falsetru
まあまあまあ私は気が気になりません。ありがとう!!!! – user798719