#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 配置API测试脚本 用于测试设备配置HTTP API的功能 """ import requests import json import time class ConfigAPITester: """配置API测试器""" def __init__(self, base_url="http://localhost:5002"): """ 初始化测试器 Args: base_url: API基础URL """ self.base_url = base_url self.api_url = f"{base_url}/api/config" def test_get_all_configs(self): """测试获取所有设备配置""" print("\n=== 测试获取所有设备配置 ===") try: response = requests.get(f"{self.api_url}/devices") result = response.json() if result['success']: print("✓ 获取所有设备配置成功") print(json.dumps(result['data'], indent=2, ensure_ascii=False)) else: print(f"✗ 获取失败: {result['message']}") except Exception as e: print(f"✗ 请求异常: {e}") def test_get_single_config(self, device_name): """测试获取单个设备配置""" print(f"\n=== 测试获取{device_name}设备配置 ===") try: response = requests.get(f"{self.api_url}/devices/{device_name}") result = response.json() if result['success']: print(f"✓ 获取{device_name}配置成功") print(json.dumps(result['data'], indent=2, ensure_ascii=False)) else: print(f"✗ 获取失败: {result['message']}") except Exception as e: print(f"✗ 请求异常: {e}") def test_set_imu_config(self): """测试设置IMU配置""" print("\n=== 测试设置IMU配置 ===") try: data = { "device_type": "real", "port": "COM6", "baudrate": 9600 } response = requests.post(f"{self.api_url}/devices/imu", json=data) result = response.json() if result['success']: print("✓ 设置IMU配置成功") print(f"消息: {result['message']}") print("更新后的配置:") print(json.dumps(result['config'], indent=2, ensure_ascii=False)) else: print(f"✗ 设置失败: {result['message']}") except Exception as e: print(f"✗ 请求异常: {e}") def test_set_pressure_config(self): """测试设置压力板配置""" print("\n=== 测试设置压力板配置 ===") try: data = { "device_type": "real", "use_mock": False, "port": "COM5", "baudrate": 115200 } response = requests.post(f"{self.api_url}/devices/pressure", json=data) result = response.json() if result['success']: print("✓ 设置压力板配置成功") print(f"消息: {result['message']}") print("更新后的配置:") print(json.dumps(result['config'], indent=2, ensure_ascii=False)) else: print(f"✗ 设置失败: {result['message']}") except Exception as e: print(f"✗ 请求异常: {e}") def test_set_camera_config(self): """测试设置相机配置""" print("\n=== 测试设置相机配置 ===") try: data = { "device_index": 0, "width": 1280, "height": 720, "fps": 30 } response = requests.post(f"{self.api_url}/devices/camera", json=data) result = response.json() if result['success']: print("✓ 设置相机配置成功") print(f"消息: {result['message']}") print("更新后的配置:") print(json.dumps(result['config'], indent=2, ensure_ascii=False)) else: print(f"✗ 设置失败: {result['message']}") except Exception as e: print(f"✗ 请求异常: {e}") def test_set_femtobolt_config(self): """测试设置FemtoBolt配置""" print("\n=== 测试设置FemtoBolt配置 ===") try: data = { "color_resolution": "1080P", "depth_mode": "NFOV_UNBINNED", "fps": 30, "depth_range_min": 1200, "depth_range_max": 1500 } response = requests.post(f"{self.api_url}/devices/femtobolt", json=data) result = response.json() if result['success']: print("✓ 设置FemtoBolt配置成功") print(f"消息: {result['message']}") print("更新后的配置:") print(json.dumps(result['config'], indent=2, ensure_ascii=False)) else: print(f"✗ 设置失败: {result['message']}") except Exception as e: print(f"✗ 请求异常: {e}") def test_validate_config(self): """测试验证配置""" print("\n=== 测试验证配置 ===") try: response = requests.get(f"{self.api_url}/validate") result = response.json() if result['success']: print("✓ 配置验证成功") validation_result = result['data'] print(f"配置有效性: {validation_result['valid']}") if validation_result['errors']: print(f"错误: {validation_result['errors']}") if validation_result['warnings']: print(f"警告: {validation_result['warnings']}") else: print(f"✗ 验证失败: {result['message']}") except Exception as e: print(f"✗ 请求异常: {e}") def test_reload_config(self): """测试重新加载配置""" print("\n=== 测试重新加载配置 ===") try: response = requests.post(f"{self.api_url}/reload") result = response.json() if result['success']: print("✓ 重新加载配置成功") print(f"消息: {result['message']}") else: print(f"✗ 重新加载失败: {result['message']}") except Exception as e: print(f"✗ 请求异常: {e}") def run_all_tests(self): """运行所有测试""" print("开始配置API功能测试...") print(f"API地址: {self.api_url}") # 等待服务启动 print("\n等待API服务启动...") time.sleep(2) # 运行测试 self.test_get_all_configs() # 测试获取单个设备配置 for device in ['imu', 'pressure', 'camera', 'femtobolt']: self.test_get_single_config(device) # 测试设置配置 self.test_set_imu_config() self.test_set_pressure_config() self.test_set_camera_config() self.test_set_femtobolt_config() # 测试其他功能 self.test_validate_config() self.test_reload_config() print("\n=== 测试完成 ===") if __name__ == "__main__": # 创建测试器并运行测试 tester = ConfigAPITester() tester.run_all_tests()