mirror of
https://github.com/moesnow/March7thAssistant.git
synced 2026-08-03 08:47:01 +08:00
- 配置 pytest 测试框架和开发依赖 (pytest, pytest-cov, pytest-qt) - 添加 utils/ 模块测试: color, date, image_utils, console, command, singleton, logger, registry - 添加 module/ 模块测试: workflow, config, notification, localization, ocr, screen, update - 添加 app/ GUI 组件测试: trie, signal_bus, config, style_sheet, icon - 添加 app/ 纯函数测试: warp_export, account_manager, schedule_dialog, check_update, log_interface, pushsettingcard, switchsettingcard - 添加通知子模块测试: webhook, telegram, smtp, lark, kook, pac, notifiers - 添加注册表模块测试: star_rail_setting, game_auto_hdr, gameaccount (winreg mock) - 共 584 个测试用例通过,覆盖率 17%
56 lines
2.0 KiB
Python
56 lines
2.0 KiB
Python
from unittest.mock import patch, MagicMock
|
|
import subprocess
|
|
from utils.command import subprocess_with_timeout, subprocess_with_stdout
|
|
|
|
|
|
class TestSubprocessWithTimeout:
|
|
@patch("utils.command.subprocess.Popen")
|
|
def test_success(self, mock_popen):
|
|
mock_process = MagicMock()
|
|
mock_process.returncode = 0
|
|
mock_popen.return_value = mock_process
|
|
result = subprocess_with_timeout(["echo", "hello"], timeout=5)
|
|
assert result is True
|
|
|
|
@patch("utils.command.subprocess.Popen")
|
|
def test_failure(self, mock_popen):
|
|
mock_process = MagicMock()
|
|
mock_process.returncode = 1
|
|
mock_popen.return_value = mock_process
|
|
result = subprocess_with_timeout(["false"], timeout=5)
|
|
assert result is False
|
|
|
|
@patch("utils.command.subprocess.Popen")
|
|
def test_timeout(self, mock_popen):
|
|
mock_process = MagicMock()
|
|
mock_process.communicate.side_effect = subprocess.TimeoutExpired(cmd="test", timeout=5)
|
|
mock_popen.return_value = mock_process
|
|
result = subprocess_with_timeout(["sleep", "100"], timeout=5)
|
|
assert result is False
|
|
mock_process.terminate.assert_called_once()
|
|
|
|
|
|
class TestSubprocessWithStdout:
|
|
@patch("utils.command.subprocess.run")
|
|
def test_success(self, mock_run):
|
|
mock_result = MagicMock()
|
|
mock_result.returncode = 0
|
|
mock_result.stdout = "hello world\n"
|
|
mock_run.return_value = mock_result
|
|
result = subprocess_with_stdout(["echo", "hello"])
|
|
assert result == "hello world"
|
|
|
|
@patch("utils.command.subprocess.run")
|
|
def test_failure(self, mock_run):
|
|
mock_result = MagicMock()
|
|
mock_result.returncode = 1
|
|
mock_run.return_value = mock_result
|
|
result = subprocess_with_stdout(["false"])
|
|
assert result is None
|
|
|
|
@patch("utils.command.subprocess.run")
|
|
def test_exception(self, mock_run):
|
|
mock_run.side_effect = Exception("command not found")
|
|
result = subprocess_with_stdout(["nonexistent"])
|
|
assert result is None
|