- LookingWebMain: 强制 IPv4 避免 IPv6 不可达挂起;requests 加超时防卡死 - get_seed_from_element_detail: 修复限流页崩溃与 favicon 误作来源 URL,改用 canonical/传入 URL - QbittorrentDownloader: 修复 main() 中模块/类误用导致的 download_by_seed AttributeError;请求加超时 - MySqlService: 修复数据库不可达时 query/execute/close 的 None 崩溃,close 后置空 connection - 新增 cf_session: Cloudflare 人机认证 cookie 管理 + 限流退避重试 + 自动弹浏览器刷新验证 - 新增 refresh_cf_cookies.py: 弹出浏览器手动验证并保存 cf_clearance - tests/: 真实网络/数据库测试(get_page、seed_is_exist、cf_session)+ run_tests.py runner - 清理无用脚本(final_test2/verify_replace/REPLACEMENT_INFO),.idea 与 cookie 文件入 .gitignore 注: test_qbittorrent_downloader.py 11 个用例为既有失败(mock 目标 session 为实例属性,与实现错配),未在本次范围
61 lines
1.7 KiB
Markdown
61 lines
1.7 KiB
Markdown
# 测试说明
|
|
|
|
## 测试文件
|
|
|
|
### MySQLDatabase 测试
|
|
- `test_database.py` - MySQLDatabase 类测试
|
|
- 测试数据库配置
|
|
- 测试创建连接对象
|
|
- 测试连接对象属性和方法
|
|
- 测试关闭连接
|
|
|
|
### seed_is_exist 测试
|
|
- `test_seed_is_exist.py` - seed_is_exist 功能真实数据库测试
|
|
- 首次运行自动创建 `LookingWeb` 库和 `seeds_info` 表(幂等)
|
|
- 测试种子不存在 → False
|
|
- 真实插入种子后 → True
|
|
- 多个种子均识别为存在
|
|
- 删除后再查询 → False
|
|
- 数据库不可达 → False(不抛异常)
|
|
- 测试数据测后自动清理
|
|
|
|
### qBittorrent 下载器测试
|
|
- `test_qbittorrent_downloader.py` - qBittorrent 下载器单元测试
|
|
- 测试初始化(带/不带认证)
|
|
- 测试添加下载任务(成功/失败/异常)
|
|
- 测试种子信息下载
|
|
- 测试带选项的下载(保存路径、分类、标签)
|
|
- 测试连接测试
|
|
- 测试获取下载列表
|
|
- 注意:当前 11/12 用例因测试 mock 目标与实现不一致(`QbittorrentDownloader.session` 是实例属性而非模块属性)而失败,属既有问题,待修复。
|
|
## 运行测试
|
|
|
|
```bash
|
|
# 安装 pytest
|
|
uv pip install pytest
|
|
|
|
# 运行所有测试
|
|
uv run python -m pytest tests/ -v
|
|
|
|
# 运行 MySQLDatabase 测试
|
|
uv run python -m pytest tests/test_database.py -v
|
|
|
|
# 运行 qBittorrent 测试
|
|
uv run python -m pytest tests/test_qbittorrent_downloader.py -v
|
|
```
|
|
|
|
## 环境要求
|
|
|
|
- Python 3.7+
|
|
- requests
|
|
- loguru
|
|
- beautifulsoup4
|
|
- pymysql
|
|
- pytest
|
|
|
|
## 测试覆盖
|
|
|
|
- MySQLDatabase: 4 个测试用例
|
|
- seed_is_exist: 5 个测试用例(真实数据库)
|
|
- qBittorrentDownloader: 12 个测试用例(11 个待修复)
|
|
- 总计: 25 个测试用例 |