You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

126 lines
3.5 KiB

#!/usr/bin/env python3
"""
系统API测试脚本
"""
import asyncio
import sys
import os
# 添加项目根目录到Python路径
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from app.utils.system_utils import SystemUtils
from app.services.system_service import SystemService
async def test_system_utils():
"""测试系统工具类"""
print("=== 测试系统工具类 ===")
# 测试获取系统类型
system_type = SystemUtils.get_system_type()
print(f"系统类型: {system_type}")
# 测试获取机器码
machine_code = SystemUtils.get_machine_code()
print(f"机器码: {machine_code}")
# 测试获取系统信息
system_info = SystemUtils.get_system_info()
print(f"系统信息: {system_info}")
print()
async def test_system_service():
"""测试系统服务类"""
print("=== 测试系统服务类 ===")
service = SystemService()
# 测试获取机器码
result = await service.get_machine_code()
print(f"获取机器码结果: {result}")
# 测试获取系统信息
result = await service.get_system_info()
print(f"获取系统信息结果: {result}")
# 测试获取详细机器码信息
result = await service.get_detailed_machine_code_info()
print(f"获取详细机器码信息结果: {result}")
print()
def test_direct_commands():
"""测试直接命令执行"""
print("=== 测试直接命令执行 ===")
import subprocess
import platform
system_type = platform.system().lower()
print(f"当前系统: {system_type}")
if system_type == "windows":
try:
# 测试 wmic 命令
result = subprocess.run(
["wmic", "csproduct", "get", "uuid"],
capture_output=True,
text=True,
timeout=10
)
print(f"wmic命令输出: {result.stdout}")
print(f"wmic命令错误: {result.stderr}")
print(f"wmic命令返回码: {result.returncode}")
except Exception as e:
print(f"wmic命令执行失败: {e}")
elif system_type == "linux":
try:
# 测试 dmidecode 命令
result = subprocess.run(
["dmidecode", "-s", "system-serial-number"],
capture_output=True,
text=True,
timeout=10
)
print(f"dmidecode命令输出: {result.stdout}")
print(f"dmidecode命令错误: {result.stderr}")
print(f"dmidecode命令返回码: {result.returncode}")
except Exception as e:
print(f"dmidecode命令执行失败: {e}")
try:
# 测试 hostid 命令
result = subprocess.run(
["hostid"],
capture_output=True,
text=True,
timeout=5
)
print(f"hostid命令输出: {result.stdout}")
print(f"hostid命令错误: {result.stderr}")
print(f"hostid命令返回码: {result.returncode}")
except Exception as e:
print(f"hostid命令执行失败: {e}")
print()
async def main():
"""主测试函数"""
print("系统API功能测试")
print("=" * 50)
# 测试系统工具类
await test_system_utils()
# 测试系统服务类
await test_system_service()
# 测试直接命令执行
test_direct_commands()
print("测试完成")
if __name__ == "__main__":
asyncio.run(main())