跳转到: 导航, 搜索

已废弃:项目测试接口

  1. 重定向 http://governance.openstack.org/reference/project-testing-interface.html


一致的操作接口

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。