如何在Django单元测试中正确使用assertRaises?

2024-10-01 15:41:56 发布

您现在位置:Python中文网/ 问答频道 /正文

问题很简单:我不能使用自我资产增加在django1.5单元测试中。在

我真的想验证一下,当你试图从一个不存在的数据库中删除一个提供者时,是否会引发LookupError。在

如您所见,我有一个ProviderDAO类,在其中定义如何删除提供者。 然后我在单元测试类ProviderManagerTests中简单地调用这个方法delete\u provider()。 我已经概述了代码中的所有可能性,现在我来这里寻求答案(我已经阅读了相关问题中的建议,但没有任何东西能起到作用) 我使用的是python2.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')

以及堆栈轨迹:

^{pr2}$

Tags: selfidcount提供者manager单元测试providerdelete

热门问题