Python 当测试未引发预期的异常时,如何显示错误消息?
我是python新手。我想测试我的代码是否引发异常。我从这里得到了密码: 现在,如果没有抛出异常,我还想显示一条消息。我该怎么做?python文档没有明确提到它。我在“强制_参数”之后添加了消息,但失败了 编辑:我尝试了修改后的第一个答案,但出现了一个异常。我犯了什么错Python 当测试未引发预期的异常时,如何显示错误消息?,python,unit-testing,exception,Python,Unit Testing,Exception,我是python新手。我想测试我的代码是否引发异常。我从这里得到了密码: 现在,如果没有抛出异常,我还想显示一条消息。我该怎么做?python文档没有明确提到它。我在“强制_参数”之后添加了消息,但失败了 编辑:我尝试了修改后的第一个答案,但出现了一个异常。我犯了什么错 import unittest def sayHelloTo(name): print("Hello " + name) class MyTestCase(unittest.TestCase): def te
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)
错误:
Error
Traceback (most recent call last):
File "C:\tests\tester.py", line 9, in test1
with self.assertRaises(Exception, "My insightful message"):
AttributeError: __exit__
从python 3.3开始,可以用作上下文管理器,并显示以下消息:
import unittest
def sayHelloTo(name):
print("Hello " + name)
class MyTestCase(unittest.TestCase):
def test1(self):
person = "John"
with self.assertRaises(Exception, msg="My insightful message"):
sayHelloTo(person)
if __name__ == "__main__":
unittest.main()
导致
Hello John
F
======================================================================
FAIL: test1 (__main__.MyTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "r.py", line 10, in test1
sayHelloTo(person)
AssertionError: Exception not raised : My insightful message
----------------------------------------------------------------------
Ran 1 test in 0.001s
FAILED (failures=1)
从python 3.3开始,可以用作上下文管理器,并显示以下消息:
import unittest
def sayHelloTo(name):
print("Hello " + name)
class MyTestCase(unittest.TestCase):
def test1(self):
person = "John"
with self.assertRaises(Exception, msg="My insightful message"):
sayHelloTo(person)
if __name__ == "__main__":
unittest.main()
导致
Hello John
F
======================================================================
FAIL: test1 (__main__.MyTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "r.py", line 10, in test1
sayHelloTo(person)
AssertionError: Exception not raised : My insightful message
----------------------------------------------------------------------
Ran 1 test in 0.001s
FAILED (failures=1)
现在,如果没有抛出异常,我还想显示一条消息。我该怎么做
unittest的一般理念是测试成功时保持沉默,失败时才变得冗长。因此,API为不成功的案例提供了“msg”关键字参数,但没有为成功的案例提供替代方案
也就是说,哲学的另一部分对你有利。通常,当测试用例失败时,测试用例会在内部引发异常。这意味着,如果要在成功时显示消息,只需在测试后添加另一条语句:
with self.assertRaises(TypeError, msg='Oh no, I did not get a TypeError')
somecode()
logging.info('Yippee, we got a TypeError!') # Runs after a successful test
现在,如果没有抛出异常,我还想显示一条消息。我该怎么做
unittest的一般理念是测试成功时保持沉默,失败时才变得冗长。因此,API为不成功的案例提供了“msg”关键字参数,但没有为成功的案例提供替代方案
也就是说,哲学的另一部分对你有利。通常,当测试用例失败时,测试用例会在内部引发异常。这意味着,如果要在成功时显示消息,只需在测试后添加另一条语句:
with self.assertRaises(TypeError, msg='Oh no, I did not get a TypeError')
somecode()
logging.info('Yippee, we got a TypeError!') # Runs after a successful test
我尝试了你的代码,但出现了一个错误。请查看我将在问题正文中添加的编辑。@t谢谢。现在可以了。你能告诉我为什么在你传递了这样的信息后,它开始工作吗
msg=“My insightful message”
?是什么促使你这么想的?文档提到了一个“msg参数”,但我没有仔细阅读它,意识到它是一个关键字参数,而不是位置参数。另一个用户unutbu指出了我的错误,这使它正常工作。当测试期间出现另一个异常时,这不起作用。你知道如何在出现不同的异常时仍然发布“见解深刻”的消息吗?我尝试了你的代码,但出现了一个错误。请查看我将在问题正文中添加的编辑。@t谢谢。现在可以了。你能告诉我为什么在你传递了这样的信息后,它开始工作吗msg=“My insightful message”
?是什么促使你这么想的?文档提到了一个“msg参数”,但我没有仔细阅读它,意识到它是一个关键字参数,而不是位置参数。另一个用户unutbu指出了我的错误,这使它正常工作。当测试期间出现另一个异常时,这不起作用。知道如何在引发不同的异常时仍然发布“见解深刻”的消息吗?raise
将通过异常,而print
将打印消息。将这两者结合起来以获得所需的行为。引发
将通过异常,而打印
将打印消息。将这两者结合起来,以获得您想要的行为。