我有一个函数,当满足某些条件时会引发TypeError。
def myfunc(..args here...):
...
raise TypeError('Message')
我想使用pytest parametrize测试此消息。
但是,因为我正在使用其他参数,我想要这样的设置:
testdata = [
(..args here..., 'Message'), # Message is the expected output
]
@pytest.mark.parametrize(
"..args here..., expected_output", testdata)
def test_myfunc(
..args here..., expected_output):
obs = myfunc()
assert obs == expected_output
简单地将Message
作为预期输出放在参数化测试数据中,给我一个失败的测试。
答案 0 :(得分:2)
您不能将邮件错误视为pytest.raises
的正常输出。有一个特殊的上下文管理器 - def test_raises():
with pytest.raises(Exception) as excinfo:
raise Exception('some info')
assert str(excinfo.value) == 'some info'
。
For example,如果您希望出现一些错误及其消息
testdata = [ (..args here..., 'Message') ] @pytest.mark.parametrize("..args here..., expected_exception_message", testdata) def test_myfunc(..args here..., expected_exception_message): with pytest.raises(TypeError) as excinfo: obs = myfunc(..args here...) assert str(excinfo.value) == expected_exception_message
所以,在你的情况下,这将是类似
AttributeError: 'module' object has no attribute 'scalar'