有没有办法在纯Python中使用
assert
来测试ValueError?
例如像这样的东西:
def try_me():
raise ValueError("No way Jose")
assert try_me() is ValueError
您可以使用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)
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
pytest
是学习代码单元测试的一个很好的模块,并且对于这种类型的测试来说非常简单。试试这个:
import pytest
with pytest.raises(ValueError):
try_me()