我的代码如下所示
class Something(models.Model)
def exception(self)
try:
Something.objects.all()
except Exception():
raise Exception()
从testcases调用此方法,其工作但我需要引发异常,它不会捕获异常 这是我的测试用例
def test_exception(self):
instance = Something()
instance.exception()
它工作正常,但我需要从块
中引发异常答案 0 :(得分:7)
这一行:
except Exception():
应该是:
except Exception:
答案 1 :(得分:2)
def exception(self)
try:
Something.objects.all()
except Exception, err:
#print err.message (if you want)
raise err
如果需要,这将捕获错误并打印确切的消息。
答案 2 :(得分:0)
为什么要抓住Exception才重新加注? 如果除了重新引发异常之外你没有在除套件中做任何事情,那么就不要首先捕获异常:
@staticmethod
def exception():
Something.objects.all()
如果你在except
套件中做了一些非常重要的事情,那么:
def exception(self):
try:
Something.objects.all()
except Exception:
# do something (with self?)
raise
然后,测试exception
方法引发异常:
def test_exception(self):
instance = Something()
self.assertRaises(Exception, instance.exception)
这取决于Something.objects.all()
提升Exception
。
PS。如果exception
不依赖于self
,那么最好将其从参数列表中删除,并使exception
成为静态方法。
PPS。 Exception
是一个非常广泛的基类异常类。更具体的异常对调试更有帮助,并允许其他代码捕获此特定异常,而不是强制它处理任何可能的Exception
。