无法用pytest模拟异常

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

我似乎无法测试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

有人可以指出我所缺少的吗?谢谢。

我似乎无法测试getopt异常。一个非常简化的示例在这里(主文件):import sys,getopt def main():try:options,_ = getopt.getopt(sys.argv [1:],'h')...

python pytest python-3.7 pytest-mock
1个回答
0
投票

使用with pytest.raises测试异常:

© www.soinside.com 2019 - 2024. All rights reserved.