gpt4 book ai didi

python - 断言某个错误发生

转载 作者:行者123 更新时间:2023-11-28 22:31:29 25 4
gpt4 key购买 nike

给定以下代码:

def fun(param):
if param == 'a':
assert False
else:
return None

# fun('a') THIS THROWS AN AssertionError
# PSEUDOCODE FOR WHAT I WANT TO DO:
# assert (fun('a') throws an AssertionError)
assert fun('b') == None

我如何断言第一个函数调用 (fun('a')) 会给我一个 AssertionError?我需要为此 try catch 还是有更优雅的方法?

最佳答案

您可以使用 pytest为此:

import pytest
...
with pytest.raises(AssertionError):
fun('a')

如果 fun('a') 引发 AssertionError,这将引发错误。

或者,如果您正在使用 unittest,并且您在 TestCase 中,您可以使用 assert
Raises
:

self.assertRaises(AssertionError, fun, 'a')

此外,正如其他答案所提到的,与断言 False 相比,raise 错误会更好。如果您确实引发了错误,您可以引发一个告诉用户更多有关错误的信息,或者引发您自己的自定义异常:

import pytest

class AError(Exception):
pass

def fun(param):
if param == 'a':
raise AError("You passed 'a'; don't do that!")
else:
return None

with pytest.raises(AError):
fun('a')

关于python - 断言某个错误发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41549079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com