本文档介绍了 you-get 代码库的测试系统,涵盖了手动和自动测试方法。它解释了如何运行现有测试、编写新测试以及确保您的贡献在不同的 Python 版本中都能正常工作。有关持续集成的信息,请参阅 持续集成。
You-get 使用 Python 内置的 unittest 框架作为其测试套件。测试主要侧重于通过检查提取器从各种媒体站点检索元数据的能力来验证它们。
您可以使用 make 命令运行整个测试套件
这将执行 YouGetTests 类中所有未被注释掉的测试方法。
要运行特定测试,您可以直接使用 unittest 模块
这在您处理特定提取器且只需要测试一个时非常有用。
来源: tests/test.py19-71 src/you_get/extractors/tiktok.py7-44
you-get 中的测试用例遵循简单的模式
download 函数的测试方法info_only=True 以在不下载的情况下检查提取TikTok 测试用例展示了对多种 URL 格式的测试,演示了如何测试同一提取器的不同 URL 模式
You-get 使用 GitHub Actions 在多个 Python 版本上进行自动测试,以确保与不同 Python 环境的兼容性。
测试套件在 Python 版本矩阵上运行
来源: .github/workflows/python-package.yml12-18
来源: .github/workflows/python-package.yml4-39
虽然自动化测试涵盖了许多情况,但手动测试通常是必需的,尤其是在
要手动测试提取器
使用 --debug 选项运行 you-get,以查看完整的提取过程
使用 --info 选项,仅显示元数据而不下载
直接从 Python shell 运行特定的提取器代码
使用 info_only=True 进行测试 - 这允许在不实际下载大型媒体文件的情况下测试提取逻辑。
使用稳定的 URL - 选择可能长期保持可用的媒体 URL。
测试多个 URL 格式 - 如 TikTok 测试所示,包含同一网站的不同 URL 变体。
注释掉失败的测试 - 不要删除不再工作的测试,而是注释掉它们并附带解释。
为新提取器添加测试 - 创建新提取器时,添加相应的测试用例。
跨 Python 版本测试 - 确保您的代码与所有支持的 Python 版本都能正常工作。
运行测试时常见的问��包括
在修复测试时,应专注于更新提取器代码,而不是修改测试预期,因为测试反映了预期的行为。
来源: tests/test.py19-71 .github/workflows/python-package.yml4-39