08ea5fbe98
添加用户管理视图、API和状态管理文件
162 lines
4.8 KiB
Python
162 lines
4.8 KiB
Python
"""CLI接口单元测试"""
|
|
|
|
import pytest
|
|
from click.testing import CliRunner
|
|
from pathlib import Path
|
|
import json
|
|
import tempfile
|
|
from apitest.cli_module import cli
|
|
|
|
|
|
@pytest.fixture
|
|
def runner():
|
|
"""创建CLI测试运行器"""
|
|
return CliRunner()
|
|
|
|
|
|
@pytest.fixture
|
|
def sample_test_cases(tmp_path):
|
|
"""创建示例测试用例文件"""
|
|
test_data = [
|
|
{
|
|
"id": "TC001",
|
|
"name": "测试用例1",
|
|
"description": "测试用例1",
|
|
"module": "test",
|
|
"endpoint": "/api/test1",
|
|
"method": "GET",
|
|
"headers": {},
|
|
"enabled": True
|
|
},
|
|
{
|
|
"id": "TC002",
|
|
"name": "测试用例2",
|
|
"description": "测试用例2",
|
|
"module": "user",
|
|
"endpoint": "/api/user",
|
|
"method": "POST",
|
|
"headers": {},
|
|
"enabled": True,
|
|
"tags": ["smoke", "regression"],
|
|
"priority": 1
|
|
}
|
|
]
|
|
|
|
test_file = tmp_path / "test_cases.json"
|
|
with open(test_file, "w", encoding="utf-8") as f:
|
|
json.dump(test_data, f)
|
|
|
|
return test_file
|
|
|
|
|
|
def test_cli_version(runner):
|
|
"""测试CLI版本命令"""
|
|
result = runner.invoke(cli, ["--version"])
|
|
assert result.exit_code == 0
|
|
assert "1.0.0" in result.output
|
|
|
|
|
|
def test_cli_help(runner):
|
|
"""测试CLI帮助命令"""
|
|
result = runner.invoke(cli, ["--help"])
|
|
assert result.exit_code == 0
|
|
assert "黑盒API测试工具" in result.output
|
|
|
|
|
|
def test_list_command(runner, sample_test_cases):
|
|
"""测试列出测试用例命令"""
|
|
result = runner.invoke(cli, ["list", str(sample_test_cases)])
|
|
assert result.exit_code == 0
|
|
assert "测试用例总数: 2" in result.output
|
|
assert "TC001" in result.output
|
|
assert "TC002" in result.output
|
|
|
|
|
|
def test_list_command_with_module_filter(runner, sample_test_cases):
|
|
"""测试列出测试用例命令(模块过滤)"""
|
|
result = runner.invoke(cli, ["list", str(sample_test_cases), "--module", "test"])
|
|
assert result.exit_code == 0
|
|
assert "TC001" in result.output
|
|
assert "TC002" not in result.output
|
|
|
|
|
|
def test_list_command_with_tag_filter(runner, sample_test_cases):
|
|
"""测试列出测试用例命令(标签过滤)"""
|
|
result = runner.invoke(cli, ["list", str(sample_test_cases), "--tag", "smoke"])
|
|
assert result.exit_code == 0
|
|
assert "TC001" not in result.output
|
|
assert "TC002" in result.output
|
|
|
|
|
|
def test_list_command_with_priority_filter(runner, sample_test_cases):
|
|
"""测试列出测试用例命令(优先级过滤)"""
|
|
result = runner.invoke(cli, ["list", str(sample_test_cases), "--priority", "1"])
|
|
assert result.exit_code == 0
|
|
assert "TC001" not in result.output
|
|
assert "TC002" in result.output
|
|
|
|
|
|
def test_validate_command(runner, sample_test_cases):
|
|
"""测试验证测试用例命令"""
|
|
result = runner.invoke(cli, ["validate", str(sample_test_cases)])
|
|
assert result.exit_code == 0
|
|
assert "验证通过" in result.output
|
|
|
|
|
|
def test_validate_command_invalid_file(runner, tmp_path):
|
|
"""测试验证测试用例命令(无效文件)"""
|
|
invalid_file = tmp_path / "invalid.json"
|
|
with open(invalid_file, "w", encoding="utf-8") as f:
|
|
f.write("{ invalid json }")
|
|
|
|
result = runner.invoke(cli, ["validate", str(invalid_file)])
|
|
assert result.exit_code != 0
|
|
|
|
|
|
def test_config_command(runner):
|
|
"""测试配置命令"""
|
|
result = runner.invoke(cli, ["config"])
|
|
assert result.exit_code == 0
|
|
assert "当前配置" in result.output
|
|
|
|
|
|
def test_config_command_with_key(runner):
|
|
"""测试配置命令(指定键)"""
|
|
result = runner.invoke(cli, ["config", "--key", "target.base_url"])
|
|
assert result.exit_code == 0
|
|
|
|
|
|
def test_run_command_no_test_cases(runner):
|
|
"""测试运行命令(无测试用例)"""
|
|
result = runner.invoke(cli, ["run"])
|
|
assert result.exit_code != 0
|
|
assert "请指定测试用例文件路径" in result.output
|
|
|
|
|
|
def test_run_command_help(runner):
|
|
"""测试运行命令帮助"""
|
|
result = runner.invoke(cli, ["run", "--help"])
|
|
assert result.exit_code == 0
|
|
assert "运行测试用例" in result.output
|
|
|
|
|
|
def test_list_command_help(runner):
|
|
"""测试列出命令帮助"""
|
|
result = runner.invoke(cli, ["list", "--help"])
|
|
assert result.exit_code == 0
|
|
assert "列出测试用例" in result.output
|
|
|
|
|
|
def test_validate_command_help(runner):
|
|
"""测试验证命令帮助"""
|
|
result = runner.invoke(cli, ["validate", "--help"])
|
|
assert result.exit_code == 0
|
|
assert "验证测试用例文件" in result.output
|
|
|
|
|
|
def test_config_command_help(runner):
|
|
"""测试配置命令帮助"""
|
|
result = runner.invoke(cli, ["config", "--help"])
|
|
assert result.exit_code == 0
|
|
assert "查看配置" in result.output
|