我试图在函数内断言引发异常,其中条件引发自定义异常消息。
功能:
if not Cart.objects.filter(member=member).count():
raise CartDoesNotExist("Cart Does Not Exist for Member: %s ( %id )." % (member.email,member.id))
现在,我能够成功地产生获得 raise 语句所需的条件。
所以,我的测试用例如下所示:
def Order_CartDoesNotExist(self):
self.assertRaises(CartDoesNotExist,Order.objects.create_order(member=self.member2,member_slot=self.memslot,order_type="Normal"))
当我运行测试时,输出是错误。它给出了相同的错误 CartDoesNotExist......
所以我的问题是,如何引发此类异常?如何在我们的单元测试中涵盖这些情况?我不想逃避这些条件,因为它们很重要并且会增加代码覆盖率?
谢谢你们。
您的代码直接调用 create_order ,这会引发异常。您需要更改它的调用方式。在Python 2.7中,你可以使用这个:
with self.assertRaises(CartDoesNotExist):
Order.objects.create_order(member=self.member2, member_slot=self.memslot, order_type="Normal"))
这里上下文管理器允许你直接调用你的代码,上下文管理器会为你处理异常。
如果您运行的是 2.6 或更低版本:
self.assertRaises(CartDoesNotExist, Order.objects.create_order, member=self.member2, member_slot=self.memslot, order_type="Normal")
在这里,您没有调用您的函数,而是将其及其所需的参数传递给assertRaises,然后assertRaises将调用代码并正确处理异常。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)