【发布时间】:2012-11-19 10:16:48
【问题描述】:
可能重复:
How do you test that a Python function throws an exception?
我必须进行白盒和黑盒测试,所以我想知道如何测试一个引发异常的函数,比如这个
class validator_client():
def validate_client(self,client):
erori=[]
if client.get_identitate()=="":
erori.append("Nu exista ID!")
if client.get_nume()=="":
erori.append("Nu exista nume!")
if (client.get_filme_inchiriate()!="da" ) and (client.get_filme_inchiriate()!="nu") :
erori.append("Campul 'Filme inchiriate' completat gresit!")
if len(erori)>0:
raise ValidatorException(erori)
我已经阅读了一些关于 assertRises() 的内容,但我无法使用此方法导入模块,在 stackowerflow 上找到了这个:
from testcase import TestCase
import mymod
class MyTestCase(TestCase):
def test1(self):
self.assertRaisesWithMessage(SomeCoolException,
'expected message',
mymod.myfunc)
但我无法让它工作。
【问题讨论】:
-
你想要什么结果?你想创建一个引发异常的函数吗?就这样做吧。你想抓住它吗?使用 try-except 块。你想要别的东西吗?让自己更清楚。
-
好吧,我必须测试函数的所有分支,例如我如何断言或类似的东西,客户没有得到“身份”,我希望能够期待并提出它在测试中类似于 assertRises("Nu exists ID!",validate_client)
-
我还不太清楚。你想测试一个对象是否有一个可调用的成员吗?您可以使用
if hasattr (obj, 'membername') and callable (obj.membername)进行检查。您认为该函数引发异常是一个问题。它有什么问题? -
我必须为项目中的所有函数编写测试代码这是一个验证函数,我必须测试所有的可能性,例如如果有人忘记输入 ID,然后函数引发异常,我的问题是如何编写一个查看异常的测试代码,确保是正确的异常,然后通过测试而不引发任何东西......
-
@BasWijnen:他说的是单元测试。