BodyBalanceEvaluation/backend/devices/test_config_api.py

227 lines
7.7 KiB
Python
Raw Normal View History

#!/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()