已废弃:项目测试接口
一致的操作接口
OpenStack 拥有大量的项目。对于每个项目,OpenStack Jenkins 需要能够执行许多任务。如果每个项目完成这些任务的方式略有不同,那么管理一致的测试基础设施将变得非常困难。此外,由于开发变更和测试的频率很高,测试基础设施必须能够预缓存通常通过互联网获取的工件。为此,每个项目都应支持一个一致的接口,用于驱动测试和其他必要任务。
所需的结果
每个 Python 项目必须能够执行
- Python 2.6 的单元测试
- Python 2.7 的单元测试
- pep8 检查
- 测试覆盖率报告
- 源代码 tarball 生成
- 翻译项目的翻译导入/导出和合并
- 文档生成
特定命令
为了驱动上述任务,应该在干净的树中支持以下命令
- tox -epy26
- tox -epy27
- tox -epep8
- tox -ecover
- tox -evenv python setup.py sdist
- tox -evenv python setup.py build_sphinx
对于已翻译的项目,还应支持
- tox -evenv python setup.py extract_messages
- tox -evenv python setup.py update_catalog
依赖项列表
每个项目应在 tools/pip-requires 中列出其操作依赖项,并在 tools/test-requires 中列出测试所需的其他依赖项。
虚拟环境管理
为了支持跨多个 Python 版本进行合理的测试,我们使用了项目中的 tox 配置文件,希望最终能够删除将 install_venv.py 复制到每个项目的操作。
运行单元测试
Nova 使用专门的测试运行器,它是 nose 的子类。该功能的大部分已被提取到 openstack.nose_plugin 中。目前,直接在 nose 下运行 nova 单元测试时仍然存在一些测试失败,但一旦解决这些问题,项目应该都配置 openstack.nose_plugin,然后直接运行 nose,无需特殊设置……这将有助于编写利用 nose 功能的代码。
辅助脚本
到目前为止,项目都具有 run_tests.sh 和 with_venv.sh 脚本。run_tests.sh 应该能够轻松地重写为将内容传递到上述 tox 命令。with_venv.sh 也很简单 - tox venv 环境 (tox -evenv) 可用于在 tox 虚拟环境中运行任意命令。
生成的文件
ChangeLog 和 AUTHORS 文件应在 setup.py sdist 时生成。oslo 中的 setup 模块中存在支持该功能的代码。
.mailmap 文件应存在于开发人员拥有多个电子邮件地址或身份的情况下,并应映射到开发人员的规范身份。
翻译
为了支持翻译处理,项目应具有有效的 babel 配置。应该在顶级项目模块内有一个 locale 包,并且在该目录中应该有 $project.pot 文件。例如,对于 nova,应该有 nova/locale/nova.pot。应配置 Babel 命令以将 .mo 文件输出到 $project/locale。
文档
开发人员文档是从树中的 Sphinx 源代码生成的。此外,还有最终用户文档和 API 文档,这些文档是在项目仓库的上下文中维护的。为了支持文档生成,项目应该在 doc/source 中具有 sphinx 文档源代码,并且 build_sphinx 应该将文档输出到 doc/build。