# 测试指南 ## 运行测试 ### 运行所有测试 ```bash pytest ``` ### 运行特定测试文件 ```bash pytest tests/test_playlist_merge.py ``` ### 运行特定测试类或函数 ```bash pytest tests/test_playlist_merge.py::TestPlaylistMergeLocalPriority pytest tests/test_playlist_merge.py::TestPlaylistMergeLocalPriority::test_merge_local_priority ``` ### 运行特定参数化测试用例 ```bash # 只运行 case1 的测试 pytest tests/test_playlist_merge.py -k "case_num-1" ``` ### 查看详细输出 ```bash pytest -v # verbose pytest -vv # more verbose pytest -s # 显示 print 输出 ``` ### 查看测试覆盖率 ```bash pip install pytest-cov pytest --cov=app --cov-report=html ``` 然后在浏览器中打开 `htmlcov/index.html` ## 测试结构 - `test_playlist_merge.py` - 播放列表合并功能的单元测试 - `conftest.py` - pytest fixtures 和配置 - `pytest.ini` - pytest 配置文件 ## 编写新测试 1. 在 `tests/` 目录下创建 `test_*.py` 文件 2. 创建以 `Test` 开头的测试类 3. 编写以 `test_` 开头的测试函数 4. 使用 `assert` 进行断言 5. 使用 `@pytest.mark.parametrize` 进行参数化测试 示例: ```python import pytest class TestMyFeature: def test_basic_functionality(self): result = my_function(input_data) assert result == expected_output @pytest.mark.parametrize("input,expected", [ (1, 2), (2, 4), (3, 6), ]) def test_with_multiple_inputs(self, input, expected): assert my_function(input) == expected ``` ## 调试测试 ### 在测试失败时进入调试器 ```bash pytest --pdb ``` ### 只运行上次失败的测试 ```bash pytest --lf ``` ### 先运行失败的测试 ```bash pytest --ff ```