相关疑难解决方法(0)

你如何测试Python函数抛出异常?

如果一个函数没有抛出预期的异常,那么如何编写一个单元测试失败?

python unit-testing exception-handling exception

695
推荐指数
15
解决办法
37万
查看次数

Python self.assertRaises

我有一个如下的小代码,请帮助我以正确的方式写这个.我想检查ID是否存在value,如果不存在则会引发异常.

value = ({'av' : '123', 'user' : 'abc', 'version' : 'xyz'})

with self.assertRaises(IndexError, value[0]["ID"]):
    print "not an error"
Run Code Online (Sandbox Code Playgroud)

python unit-testing assertraises python-unittest

1
推荐指数
1
解决办法
4504
查看次数

当测试没有抛出预期的异常时,如何显示错误消息?

我是python的新手。我想测试我的代码是否抛出异常。我从这里得到了代码:你如何测试 Python 函数抛出异常?

import mymod
import unittest

class MyTestCase(unittest.TestCase):
    def test1(self):
        self.assertRaises(SomeCoolException, mymod.myfunc, compulsory_argument)
Run Code Online (Sandbox Code Playgroud)

现在,如果没有抛出异常,我还想显示一条消息。我怎么做 ?python 文档没有明确提到它。我在“compulsory_argument”之后添加了消息,但失败了。

编辑:我尝试了第一个修改后的答案并得到了一个例外。我的错误是什么?

import unittest

def sayHelloTo(name):
    print("Hello " + name)

class MyTestCase(unittest.TestCase):
    def test1(self):
        person = "John"
        with self.assertRaises(Exception, "My insightful message"):
            sayHelloTo(person)
Run Code Online (Sandbox Code Playgroud)

错误:

Error
Traceback (most recent call last):
  File "C:\tests\tester.py", line 9, in test1
    with self.assertRaises(Exception, "My insightful message"):
AttributeError: __exit__
Run Code Online (Sandbox Code Playgroud)

python unit-testing exception

0
推荐指数
1
解决办法
1994
查看次数