我正在为将引发异常的代码编写测试。
with pytest.raises(Exception) as exception:
A.b()
assert str(exception.value) == "exception"
函数
b
永远不会返回任何东西,并且可能会引发异常。
一旦我将 b()
的返回类型设置为 def b() -> NoReturn:
,我就会发现永远不会达到断言“此代码无法访问”。要么我没有明白NoReturn的目的,要么它是Pycharm中的一个错误,因为一旦我调试它,该行是可达的。
“永远不会返回东西并可能引发异常”自相矛盾。它不能同时“从不返回任何东西”和“可能引发异常”。
即使函数没有显式使用
return
语句,也会隐式返回 None
。
您应该将类型提示中的
NoReturn
更改为None
。