08ea5fbe98
添加用户管理视图、API和状态管理文件
338 lines
9.2 KiB
Python
338 lines
9.2 KiB
Python
"""
|
|
API测试用例模块
|
|
"""
|
|
|
|
from typing import List, Dict, Any
|
|
from core.api_tester import APITester
|
|
from core.validation import ValidationRule
|
|
from data.test_data import TestDataGenerator
|
|
|
|
|
|
class APITestCases:
|
|
"""API测试用例集合"""
|
|
|
|
def __init__(self, tester: APITester):
|
|
"""
|
|
初始化测试用例
|
|
|
|
Args:
|
|
tester: API测试器实例
|
|
"""
|
|
self.tester = tester
|
|
self.test_data_generator = TestDataGenerator()
|
|
|
|
def test_health_check(self) -> bool:
|
|
"""
|
|
测试健康检查接口
|
|
|
|
Returns:
|
|
是否通过
|
|
"""
|
|
result = self.tester.request(
|
|
"GET",
|
|
"/actuator/health",
|
|
test_name="健康检查",
|
|
expected_status=200
|
|
)
|
|
|
|
validation_rules = [
|
|
ValidationRule("status_code", 200),
|
|
ValidationRule("json_path", "UP", path="status")
|
|
]
|
|
|
|
result = self.tester.validate(result, validation_rules)
|
|
return result.passed
|
|
|
|
def test_login(self, username: str = None, password: str = None) -> bool:
|
|
"""
|
|
测试用户登录
|
|
|
|
Args:
|
|
username: 用户名
|
|
password: 密码
|
|
|
|
Returns:
|
|
是否通过
|
|
"""
|
|
username = username or "admin"
|
|
password = password or "admin123"
|
|
|
|
result = self.tester.request(
|
|
"POST",
|
|
"/auth/login",
|
|
data={"username": username, "password": password},
|
|
test_name="用户登录",
|
|
expected_status=200
|
|
)
|
|
|
|
validation_rules = [
|
|
ValidationRule("status_code", 200),
|
|
ValidationRule("json_path", 200, path="code"),
|
|
ValidationRule("json_path", "token", path="data.token")
|
|
]
|
|
|
|
result = self.tester.validate(result, validation_rules)
|
|
return result.passed
|
|
|
|
def test_get_user_list(self) -> bool:
|
|
"""
|
|
测试获取用户列表
|
|
|
|
Returns:
|
|
是否通过
|
|
"""
|
|
result = self.tester.request(
|
|
"GET",
|
|
"/user/list",
|
|
params={"page": 1, "pageSize": 10},
|
|
test_name="获取用户列表",
|
|
expected_status=200
|
|
)
|
|
|
|
validation_rules = [
|
|
ValidationRule("status_code", 200),
|
|
ValidationRule("json_path", 200, path="code"),
|
|
ValidationRule("json_path", "records", path="data")
|
|
]
|
|
|
|
result = self.tester.validate(result, validation_rules)
|
|
return result.passed
|
|
|
|
def test_get_role_list(self) -> bool:
|
|
"""
|
|
测试获取角色列表
|
|
|
|
Returns:
|
|
是否通过
|
|
"""
|
|
result = self.tester.request(
|
|
"GET",
|
|
"/role/list",
|
|
params={"page": 1, "pageSize": 10},
|
|
test_name="获取角色列表",
|
|
expected_status=200
|
|
)
|
|
|
|
validation_rules = [
|
|
ValidationRule("status_code", 200),
|
|
ValidationRule("json_path", 200, path="code"),
|
|
ValidationRule("json_path", "records", path="data")
|
|
]
|
|
|
|
result = self.tester.validate(result, validation_rules)
|
|
return result.passed
|
|
|
|
def test_get_menu_list(self) -> bool:
|
|
"""
|
|
测试获取菜单列表
|
|
|
|
Returns:
|
|
是否通过
|
|
"""
|
|
result = self.tester.request(
|
|
"GET",
|
|
"/menu/list",
|
|
test_name="获取菜单列表",
|
|
expected_status=200
|
|
)
|
|
|
|
validation_rules = [
|
|
ValidationRule("status_code", 200),
|
|
ValidationRule("json_path", 200, path="code"),
|
|
ValidationRule("json_path", "list", path="data")
|
|
]
|
|
|
|
result = self.tester.validate(result, validation_rules)
|
|
return result.passed
|
|
|
|
def test_create_user(self) -> bool:
|
|
"""
|
|
测试创建用户
|
|
|
|
Returns:
|
|
是否通过
|
|
"""
|
|
user_data = self.test_data_generator.generate_user_data()
|
|
|
|
result = self.tester.request(
|
|
"POST",
|
|
"/user/create",
|
|
data=user_data,
|
|
test_name="创建用户",
|
|
expected_status=200
|
|
)
|
|
|
|
validation_rules = [
|
|
ValidationRule("status_code", 200),
|
|
ValidationRule("json_path", 200, path="code"),
|
|
ValidationRule("json_path", user_data["username"], path="data.username")
|
|
]
|
|
|
|
result = self.tester.validate(result, validation_rules)
|
|
return result.passed
|
|
|
|
def test_create_role(self) -> bool:
|
|
"""
|
|
测试创建角色
|
|
|
|
Returns:
|
|
是否通过
|
|
"""
|
|
role_data = self.test_data_generator.generate_role_data()
|
|
|
|
result = self.tester.request(
|
|
"POST",
|
|
"/role/create",
|
|
data=role_data,
|
|
test_name="创建角色",
|
|
expected_status=200
|
|
)
|
|
|
|
validation_rules = [
|
|
ValidationRule("status_code", 200),
|
|
ValidationRule("json_path", 200, path="code"),
|
|
ValidationRule("json_path", role_data["roleName"], path="data.roleName")
|
|
]
|
|
|
|
result = self.tester.validate(result, validation_rules)
|
|
return result.passed
|
|
|
|
def test_update_user(self, user_id: int = None) -> bool:
|
|
"""
|
|
测试更新用户
|
|
|
|
Args:
|
|
user_id: 用户ID
|
|
|
|
Returns:
|
|
是否通过
|
|
"""
|
|
user_data = self.test_data_generator.generate_user_data()
|
|
|
|
if user_id:
|
|
user_data["id"] = user_id
|
|
|
|
result = self.tester.request(
|
|
"PUT",
|
|
"/user/update",
|
|
data=user_data,
|
|
test_name="更新用户",
|
|
expected_status=200
|
|
)
|
|
|
|
validation_rules = [
|
|
ValidationRule("status_code", 200),
|
|
ValidationRule("json_path", 200, path="code")
|
|
]
|
|
|
|
result = self.tester.validate(result, validation_rules)
|
|
return result.passed
|
|
|
|
def test_delete_user(self, user_id: int) -> bool:
|
|
"""
|
|
测试删除用户
|
|
|
|
Args:
|
|
user_id: 用户ID
|
|
|
|
Returns:
|
|
是否通过
|
|
"""
|
|
result = self.tester.request(
|
|
"DELETE",
|
|
f"/user/delete/{user_id}",
|
|
test_name="删除用户",
|
|
expected_status=200
|
|
)
|
|
|
|
validation_rules = [
|
|
ValidationRule("status_code", 200),
|
|
ValidationRule("json_path", 200, path="code")
|
|
]
|
|
|
|
result = self.tester.validate(result, validation_rules)
|
|
return result.passed
|
|
|
|
def test_get_user_info(self, user_id: int) -> bool:
|
|
"""
|
|
测试获取用户信息
|
|
|
|
Args:
|
|
user_id: 用户ID
|
|
|
|
Returns:
|
|
是否通过
|
|
"""
|
|
result = self.tester.request(
|
|
"GET",
|
|
f"/user/info/{user_id}",
|
|
test_name="获取用户信息",
|
|
expected_status=200
|
|
)
|
|
|
|
validation_rules = [
|
|
ValidationRule("status_code", 200),
|
|
ValidationRule("json_path", 200, path="code"),
|
|
ValidationRule("json_path", user_id, path="data.id")
|
|
]
|
|
|
|
result = self.tester.validate(result, validation_rules)
|
|
return result.passed
|
|
|
|
def test_search_users(self, keyword: str = None) -> bool:
|
|
"""
|
|
测试搜索用户
|
|
|
|
Args:
|
|
keyword: 搜索关键词
|
|
|
|
Returns:
|
|
是否通过
|
|
"""
|
|
keyword = keyword or "admin"
|
|
|
|
result = self.tester.request(
|
|
"GET",
|
|
"/user/search",
|
|
params={"keyword": keyword, "page": 1, "pageSize": 10},
|
|
test_name="搜索用户",
|
|
expected_status=200
|
|
)
|
|
|
|
validation_rules = [
|
|
ValidationRule("status_code", 200),
|
|
ValidationRule("json_path", 200, path="code"),
|
|
ValidationRule("json_path", "records", path="data")
|
|
]
|
|
|
|
result = self.tester.validate(result, validation_rules)
|
|
return result.passed
|
|
|
|
def run_all_tests(self) -> Dict[str, bool]:
|
|
"""
|
|
运行所有测试用例
|
|
|
|
Returns:
|
|
测试结果字典
|
|
"""
|
|
results = {}
|
|
|
|
# 健康检查
|
|
results["health_check"] = self.test_health_check()
|
|
|
|
# 登录
|
|
results["login"] = self.test_login()
|
|
|
|
# 获取列表
|
|
results["get_user_list"] = self.test_get_user_list()
|
|
results["get_role_list"] = self.test_get_role_list()
|
|
results["get_menu_list"] = self.test_get_menu_list()
|
|
|
|
# 创建
|
|
results["create_user"] = self.test_create_user()
|
|
results["create_role"] = self.test_create_role()
|
|
|
|
# 搜索
|
|
results["search_users"] = self.test_search_users()
|
|
|
|
return results |