ValueError 的 Python 断言
Posted
技术标签:
【中文标题】ValueError 的 Python 断言【英文标题】:Python Assertion for ValueError 【发布时间】:2021-08-23 10:51:21 【问题描述】:有没有办法在纯 Python 中使用 assert
来测试 ValueError?
例如类似:
def try_me():
raise ValueError("No way Jose")
assert try_me() is ValueError
【问题讨论】:
我很好奇您的预期用例是什么。您是否 - 例如 - 作为单元测试的一部分执行此操作,测试某些方法在以某种方式调用时会引发特定类型的错误?如果是这样,大多数测试框架都有使用框架执行此操作的方法(但具体方式取决于您使用的框架)。 【参考方案1】:assert
仅计算 expressions
。
但你可以这样做:
def catch_exception(method):
try:
method()
except Exception as e:
return e.__class__
def try_me():
raise ValueError("No way Jose")
assert catch_exception(try_me) is ValueError # okay
assert catch_exception(try_me) is IndexError # fails
【讨论】:
【参考方案2】:您可以使用 unittest 模块中的unittest.TestCase.assertRaises。检查try_me
函数是否引发ValueError
如下所示:
import unittest
def try_me():
raise ValueError("No way Jose")
class MyTestCase(unittest.TestCase):
def test_if_throws_exception(self):
self.assertRaises(ValueError, try_me)
【讨论】:
以上是关于ValueError 的 Python 断言的主要内容,如果未能解决你的问题,请参考以下文章
错误ValueError:尝试使用cross_val_score和线性回归时不支持连续[重复]
数字后带有减号的 CSV 文件。 “ValueError:无法将字符串转换为浮点数:”