使用Unittest Python进行测试

2024-10-01 13:34:20 发布

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

我正在用Python Unittest运行ninig测试。我正在运行测试,但我想做负测试,我想测试函数抛出是否是异常,它会通过,但如果没有抛出异常,则测试失败。我的脚本是:

    try:
        result = self.client.service.GetStreamUri(self.stream, self.token)
        self.assertFalse
    except suds.WebFault, e:                        
        self.assertTrue
    else:
        self.assertTrue

即使函数运行得很好,这也总是被认为是真的。我还尝试了其他各种方法,包括:

^{pr2}$

有人有什么建议吗?在

谢谢

我试过加薪,但运气不好。在

    try:
        result = self.client.service.GetStreamUri(self.stream, self.token)
        self.assertRaises(WebFault)
    except suds.WebFault, e:                        
        self.assertFalse
    except Exception, e:                        
        self.assertTrue

它还是过去了。由于某些原因,它不尝试执行assertRaises语句。我也试过:(函数应该失败,但是测试应该通过)

    try:
        result = self.client.service.GetStreamUri(self.stream, self.token)

    except suds.WebFault, e:                        
        self.assertFalse
    except Exception, e:                        
        self.assertTrue
    else:
        self.assertFalse

由于某些原因,即使函数通过它也不会引发错误。不管发生什么事都是例外。除非有一个else语句,否则它就是那个。在

找到了一种有效的方法,但这似乎是一种非常糟糕的方式:

有人能建议一种更干净的方法吗?在

    try:
        result = self.client.service.GetStreamUri(self.stream, self.token)

    except suds.WebFault, e:                        
        self.assertFalse
    except Exception, e:
        pass

    try:
        result==result
    except:
        result=None
    if result==None:
        assert True
    else:
        assert False

Tags: 函数selfclienttokenstreamserviceresultelse
3条回答

优秀的nose unit testing提供了@raises decorator

@raises(TypeError)
def test_raises_type_error():
    raise TypeError("This test passes")

你试过^{}吗?在

TestCase.assertRaises是您需要的,但是在您的示例中,您似乎有点误用它。你需要这样的东西:

def test_GetStreamUri(self):
    self.assertRaises(WebFault, self.client.service.GetStreamUri)
    result = self.client.service.GetStreamUri(self.stream, self.token)

您需要告诉unittest关于可调用的,在调用可调用之前,将引发异常。在

相关问题 更多 >