跳转至

算法测试用例说明

本目录包含 AI 学习教程中核心算法的 pytest 测试用例。

📁 目录结构

Text Only
算法/tests/
├── conftest.py        # pytest配置和共享fixtures
├── test_basic.py      # 基础数据结构测试
├── test_sort.py       # 排序算法测试
├── test_search.py     # 搜索算法测试
├── test_dp.py         # 动态规划测试
└── README.md          # 本文件

🚀 快速开始

安装依赖

Bash
pip install pytest pytest-cov

运行所有测试

Bash
# 在算法/tests/目录下运行
cd 算法/tests
pytest -v

# 或者从项目根目录运行
pytest 算法/tests/ -v

运行特定测试文件

Bash
# 只运行排序测试
pytest test_sort.py -v

# 只运行动态规划测试
pytest test_dp.py -v

运行特定测试类或方法

Bash
# 运行特定类
pytest test_sort.py::TestQuickSort -v

# 运行特定方法
pytest test_sort.py::TestQuickSort::test_quick_sort_cases -v

📊 测试覆盖

test_basic.py - 基础数据结构

  • 数组操作: 访问、修改、插入、删除、切片
  • 链表操作: 创建、遍历、反转、环检测
  • 栈操作: push 、 pop 、 peek 、括号匹配
  • 队列操作: enqueue 、 dequeue 、 FIFO 特性
  • 哈希表操作: 字典、集合操作
  • 二叉树操作: 遍历(前/中/后/层序)、深度计算、翻转

test_sort.py - 排序算法

  • 冒泡排序 (O(n²))
  • 选择排序 (O(n²))
  • 插入排序 (O(n²))
  • 归并排序 (O(n log n))
  • 快速排序 (O(n log n))
  • 堆排序 (O(n log n))
  • 希尔排序 (O(n^1.25))
  • 计数排序 (O(n+k))
  • 桶排序 (O(n+k))
  • 基数排序 (O(d*n))

test_search.py - 搜索算法

  • 二分搜索: 标准版、递归版
  • lower_bound/upper_bound
  • 旋转数组搜索
  • BFS: 图遍历、最短路径、网格搜索
  • DFS: 图遍历、单词搜索

test_dp.py - 动态规划

  • 斐波那契数列: 递归、记忆化、 DP 、空间优化
  • 爬楼梯问题: 基础版、 k 步版
  • 最长公共子序列 (LCS)
  • 最长递增子序列 (LIS): DP 版、二分优化版
  • 0-1 背包问题: 标准版、空间优化版
  • 编辑距离
  • 最大子数组和 (Kadane 算法)
  • 打家劫舍: 线性、环形
  • 股票买卖: 单次、多次、 k 次

🏷️ 测试标记

Bash
# 运行性能测试
pytest -v -m performance

# 跳过慢速测试
pytest -v -m "not slow"

# 运行冒烟测试
pytest -v -m smoke

📈 代码覆盖率

Bash
# 生成覆盖率报告
pytest --cov=. --cov-report=html

# 查看报告
open htmlcov/index.html

✅ 测试用例规范

  1. 命名规范
  2. 测试文件: test_*.py
  3. 测试类: Test*
  4. 测试方法: test_*

  5. 测试结构

  6. 正常输入测试
  7. 边界条件测试
  8. 异常输入测试

  9. 参数化测试

  10. 使用 @pytest.mark.parametrize 减少重复代码

  11. 文档注释

  12. 每个测试类和方法都有清晰的文档说明

🔧 常见问题

Q: 如何只运行快速测试

Bash
pytest -v -m "not slow"

Q: 如何查看打印输出

Bash
pytest -v -s

Q: 如何在测试失败时进入调试

Bash
pytest --pdb

Q: 如何并行运行测试

Bash
pip install pytest-xdist
pytest -n auto

📝 添加新测试

  1. 在对应的测试文件中添加新的测试类或方法
  2. 遵循现有的命名和结构规范
  3. 添加必要的文档注释
  4. 运行测试确保通过

作者: AI 学习教程 用途: 为即将读研的大学生提供算法验证工具

⚠️ 核验说明(2026-04-04):本页已按算法测试用例目录的用途重新复核。测试页主要用于验证边界条件、复杂度退化与实现正确性,不应被理解为只有刷题场景才需要这些测试。


最后更新日期: 2026-04-04