我似乎无法测试getopt异常。这里是一个非常简化的示例(主文件):
import sys, getopt
def main():
try:
options, _ = getopt.getopt(sys.argv[1:], 'h')
except getopt.GetoptError:
print("here I want to go")
if __name__ == '__main__':
main()
而我试图引发GetoptError异常的测试文件在这里(测试文件):
import getopt, mock, main
@mock.patch("getopt.getopt", mock.MagicMock(side_effect=getopt.GetoptError('')))
def main_test():
try:
main.main()
assert False
except getopt.GetoptError:
assert True
很遗憾,没有引发异常。测试返回:
@mock.patch("getopt.getopt", mock.MagicMock(side_effect=getopt.GetoptError('')))
def main_test():
try:
main.main()
> assert False
E assert False
main_test.py:7: AssertionError
有人可以指出我所缺少的吗?谢谢。
答案 0 :(得分:0)
使用with pytest.raises
测试异常:
def main_test():
with pytest.raises(getopt.GetoptError) as err:
main.main()
请为http://doc.pytest.org/en/latest/assert.html引用pytest断言