gpt4 book ai didi

python - 系统("pause")在单元测试中

转载 作者:行者123 更新时间:2023-12-01 04:11:26 26 4
gpt4 key购买 nike

我有一个已编译为 .exe 的 Python 应用程序。
在某些情况下,程序以 sys.exit () 终止,但为了不关闭控制台窗口,我使用下面的代码执行此操作,效果很好:

try:
sys.exit()
except SystemExit:
raise
finally:
os.system("pause")

问题是,我需要测试我的代码是否引发 SystemExit,但由于最终阻塞,测试无法通过 - 它们只是无限的。
有没有可能让unittest通过os.system("pause")
我可以添加一个默认参数,这将防止暂停,但在我的情况下会很复杂 - 如果有任何可能性我想在单元测试中进行。

最佳答案

我会简单地模拟os.system。甚至 sys.exit 还可以断言它是否被调用。

# your_module.py
import sys
import os


def something():
try:
sys.exit()
except SystemExit:
raise
finally:
os.system("pause")

还有测试

import unittest
import your_module
try:
from unittest.mock import patch
except ImportError:
from mock import patch


class TestSysexit(unittest.TestCase):

@patch('your_module.os.system')
def test_system_exit(self, mock_os_system):

with self.assertRaises(SystemExit):
your_module.something()
mock_os_system.assert_called_once_with('pause')

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

模拟和补丁位于 python3 上的 unittest.mock 和 python2 上的模拟库中。

关于python - 系统("pause")在单元测试中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34893456/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com