ValueError 的 Python 断言

问题描述 投票:0回答:3

有没有办法在纯Python中使用

assert
来测试ValueError?

例如像这样的东西:

def try_me():
    raise ValueError("No way Jose")

assert try_me() is ValueError
python assert valueerror
3个回答
1
投票

您可以使用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)

0
投票

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

0
投票

pytest
是学习代码单元测试的一个很好的模块,并且对于这种类型的测试来说非常简单。试试这个:

import pytest
    
with pytest.raises(ValueError):
        try_me()
© www.soinside.com 2019 - 2024. All rights reserved.