#!/usr/bin/env python3 """ 测试本地版REST API和钩子功能 """ import requests import json import time # 配置 BASE_URL = "http://localhost:9001" TEST_PAGETYPE = "Test Page" TEST_NAME = "TEST-001" def test_create_record(): """测试创建记录""" print("=== 测试创建记录 ===") data = { "name": TEST_NAME, "title": "测试记录", "status": "Active" } try: response = requests.post( f"{BASE_URL}/api/data/{TEST_PAGETYPE}", json=data, headers={"Content-Type": "application/json"} ) print(f"状态码: {response.status_code}") print(f"响应: {response.json()}") if response.status_code == 200: print("✅ 创建记录成功") return True else: print("❌ 创建记录失败") return False except Exception as e: print(f"❌ 创建记录异常: {e}") return False def test_update_record(): """测试更新记录""" print("\n=== 测试更新记录 ===") data = { "title": "更新后的标题", "status": "Inactive" } try: response = requests.put( f"{BASE_URL}/api/data/{TEST_PAGETYPE}/{TEST_NAME}", json=data, headers={"Content-Type": "application/json"} ) print(f"状态码: {response.status_code}") print(f"响应: {response.json()}") if response.status_code == 200: print("✅ 更新记录成功") return True else: print("❌ 更新记录失败") return False except Exception as e: print(f"❌ 更新记录异常: {e}") return False def test_get_record(): """测试获取记录""" print("\n=== 测试获取记录 ===") try: response = requests.get( f"{BASE_URL}/api/data/{TEST_PAGETYPE}/{TEST_NAME}" ) print(f"状态码: {response.status_code}") print(f"响应: {response.json()}") if response.status_code == 200: print("✅ 获取记录成功") return True else: print("❌ 获取记录失败") return False except Exception as e: print(f"❌ 获取记录异常: {e}") return False def test_get_records(): """测试获取记录列表""" print("\n=== 测试获取记录列表 ===") try: response = requests.get( f"{BASE_URL}/api/data/{TEST_PAGETYPE}", params={ "limit_page_length": 10 } ) print(f"状态码: {response.status_code}") print(f"响应: {response.json()}") if response.status_code == 200: print("✅ 获取记录列表成功") return True else: print("❌ 获取记录列表失败") return False except Exception as e: print(f"❌ 获取记录列表异常: {e}") return False def test_delete_record(): """测试删除记录""" print("\n=== 测试删除记录 ===") try: response = requests.delete( f"{BASE_URL}/api/data/{TEST_PAGETYPE}/{TEST_NAME}" ) print(f"状态码: {response.status_code}") print(f"响应: {response.json()}") if response.status_code == 200: print("✅ 删除记录成功") return True else: print("❌ 删除记录失败") return False except Exception as e: print(f"❌ 删除记录异常: {e}") return False def test_hook_execution(): """测试钩子执行""" print("\n=== 测试钩子执行 ===") data = { "pagetype": TEST_PAGETYPE, "name": TEST_NAME, "hook_name": "on_update", "data": {"test": "hook data"} } try: response = requests.post( f"{BASE_URL}/api/hooks/execute", json=data, headers={"Content-Type": "application/json"} ) print(f"状态码: {response.status_code}") print(f"响应: {response.json()}") if response.status_code == 200: print("✅ 钩子执行成功") return True else: print("❌ 钩子执行失败") return False except Exception as e: print(f"❌ 钩子执行异常: {e}") return False def main(): """主测试函数""" print("开始测试本地版REST API和钩子功能...") print(f"测试目标: {BASE_URL}") print(f"测试PageType: {TEST_PAGETYPE}") print(f"测试记录名: {TEST_NAME}") # 等待服务启动 print("\n等待服务启动...") time.sleep(2) # 执行测试 tests = [ test_create_record, test_update_record, test_get_record, test_get_records, test_hook_execution, test_delete_record ] passed = 0 total = len(tests) for test in tests: try: if test(): passed += 1 except Exception as e: print(f"❌ 测试异常: {e}") print(f"\n=== 测试结果 ===") print(f"通过: {passed}/{total}") print(f"成功率: {passed/total*100:.1f}%") if passed == total: print("🎉 所有测试通过!") else: print("⚠️ 部分测试失败,请检查日志") if __name__ == "__main__": main()