test_time_parser.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. 测试时间解析功能
  5. """
  6. import sys
  7. sys.path.append('.')
  8. from video_segment_extractor import parse_time_to_seconds
  9. def test_time_parser():
  10. """测试时间解析函数"""
  11. test_cases = [
  12. ("30", 30.0),
  13. ("30.5", 30.5),
  14. ("1:30", 90.0),
  15. ("1:30.5", 90.5),
  16. ("0:1:30", 90.0),
  17. ("1:23:45", 5025.0),
  18. ("2:0:0", 7200.0)
  19. ]
  20. print("测试时间解析功能...")
  21. print("=" * 50)
  22. all_passed = True
  23. for time_str, expected in test_cases:
  24. try:
  25. result = parse_time_to_seconds(time_str)
  26. if abs(result - expected) < 0.001: # 浮点数比较
  27. status = "✅ PASS"
  28. else:
  29. status = "❌ FAIL"
  30. all_passed = False
  31. print(f"{time_str:>8} -> {result:>8.1f}s (期望: {expected:>8.1f}s) {status}")
  32. except Exception as e:
  33. print(f"{time_str:>8} -> ERROR: {e} ❌ FAIL")
  34. all_passed = False
  35. print("=" * 50)
  36. # 测试错误情况
  37. print("\n测试错误处理...")
  38. error_cases = [
  39. "abc",
  40. "1:2:3:4",
  41. "-10",
  42. "1:-30"
  43. ]
  44. for time_str in error_cases:
  45. try:
  46. result = parse_time_to_seconds(time_str)
  47. print(f"{time_str:>8} -> {result:>8.1f}s ❌ FAIL (应该报错)")
  48. all_passed = False
  49. except Exception as e:
  50. print(f"{time_str:>8} -> ERROR: {str(e)[:30]}... ✅ PASS")
  51. print("=" * 50)
  52. if all_passed:
  53. print("\n🎉 所有测试通过!")
  54. return True
  55. else:
  56. print("\n❌ 部分测试失败!")
  57. return False
  58. if __name__ == "__main__":
  59. success = test_time_parser()
  60. sys.exit(0 if success else 1)