【问题标题】:Python unittest: How to raise IndexError for sys.argv?Python unittest:如何为 sys.argv 引发 IndexError?
【发布时间】:2022-01-08 09:43:50
【问题描述】:

我正在尝试测试正在执行的脚本中的参数数量少于三个的情况。调试时,我看到 IndexError 发生,但由于某种原因 assertRaises 没有“看到”它。 谁能帮忙解决这个问题?

my_file.py:


def my_func():
    try:
        sys.argv[2]
    except IndexError:
        pass

text_sys_srgv.py

import sys
import unittest
import my_file
from unittest.mock import patch

class TestServer(unittest.TestCase):
    def test_my_func(self):
        work_dir = os.path.dirname(os.getcwd())
        my_file_full_path = os.path.join(work_dir, 'my_file.py')

        test_args = [my_file_full_path, 'arg1']
        with patch.object(sys, 'argv', test_args):
            self.assertRaises(IndexError, my_file.my_func)

if __name__ == '__main__':
    unittest.main()

【问题讨论】:

  • my_func 不会引发异常。它抓住了它。 assertRaises 将确认异常是否真的从函数中抛出,而不是在内部捕获并抑制。

标签: python python-3.x python-unittest argv sys


【解决方案1】:

您的my_func 不会引发异常。它抓住了它。 assertRaises 将确认异常是否真的被抛出函数,而不是被捕获并被抑制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    • 2017-11-12
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多