python - 断言异常消息?

标签 python pytest

我在一个有很多自定义异常的项目中使用 pytest。

pytest 提供了一种方便的语法来检查是否已引发异常,但是,我不知道是否有一种语法可以断言已引发了正确的异常消息。

假设我有一个 CustomException 打印“boo!”,我如何断言“boo!”确实已打印,而不是“”?

#errors.py
class CustomException(Exception):
    def __str__(self): return "ouch!"
#test.py
import pytest, myModule

def test_custom_error(): # SHOULD FAIL
    with pytest.raises(myModule.CustomException):
        raise myModule.CustomException == "boo!"

最佳答案

我认为您正在寻找的是:

def failer():
    raise myModule.CustomException()

def test_failer():
    with pytest.raises(myModule.CustomException) as excinfo:
        failer()

    assert str(excinfo.value) == "boo!"

关于python - 断言异常消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57560531/

相关文章:

python - 将 py.test 的输出作为对象读取

python - 如何让 PyTest 在 Visual Studio 中工作

python - pytest 找不到测试

python - 我如何在 Python/Flask 中干净地做 slugs?

python - 提取具有不规则模式的数据 - Python Xpath

javascript - 关于scrapy的问题,为什么不能解析整个页面,只能解析页面的第一条记录?

python - 如何用python控制windows中的特定USB端口?

python - 当 Pyunit 和 Nose 测试失败时,为什么 py.test 通过单元测试(如预期的那样)?

python - destroy 方法的属性错误

python - Pytest - 如何将特定的设置和拆卸函数链接到特定的测试函数?