""" 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