feat(admin): 添加用户管理相关文件

添加用户管理视图、API和状态管理文件
This commit is contained in:
张翔
2026-03-28 14:37:29 +08:00
commit 08ea5fbe98
1643 changed files with 255646 additions and 0 deletions
@@ -0,0 +1,306 @@
import pytest
from click.testing import CliRunner
from unittest.mock import patch, MagicMock
from apitest.main import cli
import sys
def test_cli_version():
"""测试版本信息"""
runner = CliRunner()
result = runner.invoke(cli, ['--version'])
assert result.exit_code == 0
assert '1.0.0' in result.output
def test_cli_with_no_command():
"""测试无命令时显示帮助信息"""
runner = CliRunner()
result = runner.invoke(cli, [])
assert result.exit_code == 0
assert '黑盒API测试工具' in result.output
def test_cli_run_with_valid_options():
"""测试有效命令执行"""
runner = CliRunner()
with patch('apitest.main.ConfigManager') as mock_config:
with patch('apitest.main.LoggerManager') as mock_logger:
with patch('apitest.main.TestOrchestrator') as mock_orchestrator:
with patch('apitest.main.ReportManager') as mock_report:
mock_config.return_value = MagicMock()
mock_logger.return_value = MagicMock()
mock_orchestrator.return_value = MagicMock()
mock_report.return_value = MagicMock()
mock_results = MagicMock()
mock_results.passed = 10
mock_results.failed = 0
mock_results.skipped = 0
mock_orchestrator.return_value.run_suite.return_value = mock_results
result = runner.invoke(cli, ['run', '--suite', 'test-suite'])
assert result.exit_code == 0
assert mock_orchestrator.return_value.run_suite.called
def test_cli_run_with_filter():
"""测试带过滤器的运行命令"""
runner = CliRunner()
with patch('apitest.main.ConfigManager') as mock_config:
with patch('apitest.main.LoggerManager') as mock_logger:
with patch('apitest.main.TestOrchestrator') as mock_orchestrator:
with patch('apitest.main.ReportManager') as mock_report:
mock_config.return_value = MagicMock()
mock_logger.return_value = MagicMock()
mock_orchestrator.return_value = MagicMock()
mock_report.return_value = MagicMock()
mock_results = MagicMock()
mock_results.passed = 5
mock_results.failed = 0
mock_results.skipped = 0
mock_orchestrator.return_value.run_suite.return_value = mock_results
result = runner.invoke(cli, ['run', '--filter', 'priority=high'])
assert result.exit_code == 0
def test_cli_run_with_parallel():
"""测试并发执行"""
runner = CliRunner()
with patch('apitest.main.ConfigManager') as mock_config:
with patch('apitest.main.LoggerManager') as mock_logger:
with patch('apitest.main.TestOrchestrator') as mock_orchestrator:
with patch('apitest.main.ReportManager') as mock_report:
mock_config.return_value = MagicMock()
mock_logger.return_value = MagicMock()
mock_orchestrator.return_value = MagicMock()
mock_report.return_value = MagicMock()
mock_results = MagicMock()
mock_results.passed = 10
mock_results.failed = 0
mock_results.skipped = 0
mock_orchestrator.return_value.run_suite.return_value = mock_results
result = runner.invoke(cli, ['run', '--parallel', '--threads', '8'])
assert result.exit_code == 0
def test_cli_run_with_failed_tests():
"""测试有失败测试的情况"""
runner = CliRunner()
with patch('apitest.main.ConfigManager') as mock_config:
with patch('apitest.main.LoggerManager') as mock_logger:
with patch('apitest.main.TestOrchestrator') as mock_orchestrator:
with patch('apitest.main.ReportManager') as mock_report:
mock_config.return_value = MagicMock()
mock_logger.return_value = MagicMock()
mock_orchestrator.return_value = MagicMock()
mock_report.return_value = MagicMock()
mock_results = MagicMock()
mock_results.passed = 5
mock_results.failed = 2
mock_results.skipped = 0
mock_orchestrator.return_value.run_suite.return_value = mock_results
result = runner.invoke(cli, ['run'])
assert result.exit_code == 1
def test_cli_run_with_exception():
"""测试异常处理"""
runner = CliRunner()
with patch('apitest.main.ConfigManager') as mock_config:
mock_config.side_effect = Exception("Config error")
result = runner.invoke(cli, ['run'])
assert result.exit_code == 1
assert '执行测试时出错' in result.output
def test_cli_list_command():
"""测试list命令"""
runner = CliRunner()
with patch('apitest.main.ConfigManager') as mock_config:
with patch('apitest.main.LoggerManager') as mock_logger:
with patch('apitest.main.TestOrchestrator') as mock_orchestrator:
mock_config.return_value = MagicMock()
mock_logger.return_value = MagicMock()
mock_orchestrator.return_value = MagicMock()
mock_test_case = MagicMock()
mock_test_case.id = 'test-001'
mock_test_case.name = 'Test Case 1'
mock_test_case.module = 'user'
mock_test_case.method.value = 'GET'
mock_test_case.endpoint = '/api/user'
mock_test_case.priority = 'high'
mock_test_case.enabled = True
mock_orchestrator.return_value.list_test_cases.return_value = [mock_test_case]
result = runner.invoke(cli, ['list'])
assert result.exit_code == 0
assert '测试套件' in result.output
assert 'test-001' in result.output
def test_cli_list_with_filter():
"""测试带过滤器的list命令"""
runner = CliRunner()
with patch('apitest.main.ConfigManager') as mock_config:
with patch('apitest.main.LoggerManager') as mock_logger:
with patch('apitest.main.TestOrchestrator') as mock_orchestrator:
mock_config.return_value = MagicMock()
mock_logger.return_value = MagicMock()
mock_orchestrator.return_value = MagicMock()
mock_orchestrator.return_value.list_test_cases.return_value = []
result = runner.invoke(cli, ['list', '--filter', 'priority=high'])
assert result.exit_code == 0
def test_cli_list_with_exception():
"""测试list命令异常处理"""
runner = CliRunner()
with patch('apitest.main.ConfigManager') as mock_config:
mock_config.side_effect = Exception("List error")
result = runner.invoke(cli, ['list'])
assert result.exit_code == 1
assert '列出测试用例时出错' in result.output
def test_cli_report_command():
"""测试report命令"""
runner = CliRunner()
with patch('apitest.main.ConfigManager') as mock_config:
with patch('apitest.main.LoggerManager') as mock_logger:
with patch('apitest.main.ReportManager') as mock_report:
mock_config.return_value = MagicMock()
mock_logger.return_value = MagicMock()
mock_report.return_value = MagicMock()
result = runner.invoke(cli, ['report'])
assert result.exit_code == 0
assert '报告已生成' in result.output
def test_cli_report_with_output():
"""测试带输出路径的report命令"""
runner = CliRunner()
with patch('apitest.main.ConfigManager') as mock_config:
with patch('apitest.main.LoggerManager') as mock_logger:
with patch('apitest.main.ReportManager') as mock_report:
mock_config.return_value = MagicMock()
mock_logger.return_value = MagicMock()
mock_report.return_value = MagicMock()
result = runner.invoke(cli, ['report', '--output', '/tmp/report.html'])
assert result.exit_code == 0
def test_cli_report_with_exception():
"""测试report命令异常处理"""
runner = CliRunner()
with patch('apitest.main.ConfigManager') as mock_config:
mock_config.side_effect = Exception("Report error")
result = runner.invoke(cli, ['report'])
assert result.exit_code == 1
assert '生成报告时出错' in result.output
def test_cli_config_get():
"""测试config get命令"""
runner = CliRunner()
with patch('apitest.main.ConfigManager') as mock_config:
mock_config.return_value = MagicMock()
mock_config.return_value.get.return_value = 'test-value'
result = runner.invoke(cli, ['config', '--get', 'test-key'])
assert result.exit_code == 0
assert 'test-key = test-value' in result.output
def test_cli_config_set():
"""测试config set命令"""
runner = CliRunner()
with patch('apitest.main.ConfigManager') as mock_config:
mock_config.return_value = MagicMock()
result = runner.invoke(cli, ['config', '--set', 'test.key=test-value'])
assert result.exit_code == 0
assert '配置已设置' in result.output
mock_config.return_value.set.assert_called_once_with('test.key', 'test-value')
def test_cli_config_validate():
"""测试config validate命令"""
runner = CliRunner()
with patch('apitest.main.ConfigManager') as mock_config:
mock_config.return_value = MagicMock()
mock_config.return_value.validate.return_value = (True, [])
result = runner.invoke(cli, ['config', '--validate'])
assert result.exit_code == 0
assert '配置验证通过' in result.output
def test_cli_config_validate_with_errors():
"""测试config validate命令带错误"""
runner = CliRunner()
with patch('apitest.main.ConfigManager') as mock_config:
mock_config.return_value = MagicMock()
mock_config.return_value.validate.return_value = (False, ['Error 1', 'Error 2'])
result = runner.invoke(cli, ['config', '--validate'])
assert result.exit_code == 1
assert '配置验证失败' in result.output
def test_cli_config_with_exception():
"""测试config命令异常处理"""
runner = CliRunner()
with patch('apitest.main.ConfigManager') as mock_config:
mock_config.side_effect = Exception("Config error")
result = runner.invoke(cli, ['config'])
assert result.exit_code == 1
assert '配置管理时出错' in result.output