Files
everything-is-suitable/everything-is-suitable-test/test-tools/test_cases/api_tests.py
T
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

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