返回介绍

6.8 测试策略

发布于 2024-01-23 21:41:46 字数 1180 浏览 0 评论 0 收藏 0

在项目中包含测试代码当然很好,但是如何运行这些测试也相当重要。实际上,在许多项目中尽管包含了测试代码,但是测试代码却由于各种原因无法运行。

尽管这个主题并不局限于Python,但是考虑到其重要性,这里还是要强调一下:要对未测试代码零容忍。没有一组合适的单元测试覆盖的代码是不应该被合并的。

最低目标是保证每次代码提交都能通过所有测试,最好是能以自动的方式实现。

例如,OpenStack会依赖基于Gerrit(https://code.google.com/p/gerrit/)、Jenkins(http://jenkins-ci.org/)和Zuul(http://ci.openstack.org/zuul/)的一个特定工作流程。每次代码提交都会经过基于Gerrit的代码评审系统,同时Zuul负责通过Jenkins运行一组测试任务。Jenkins会针对各个项目运行单元测试以及各种更高级别的功能测试。这可以保证提交的代码能通过所有测试。由众多开发人员完成的代码评审保证所有被提交的代码都是具有相应的单元测试的。

如果正在使用流行的GitHub托管服务,Travis CI(https://travis-ci.org/)提供了一种在代码的签入(push)、合并(merge)或签出(pull)请求后运行测试的方式。尽管在提交后执行测试有些差强人意,但这仍然是针对回归问题的一种不错的方式。Travis支持所有主要的Python版本,并可以高度定制。一旦通过它们的Web界面在项目中激活了Travis,就可以通过加入一个简单的.travis.yml文件(如示例6.17所示)来完成后续工作。

示例6.17 .travis.yml文件的例子

language: python
python:
  - "2.7"
  - "3.3"

# command to install dependencies
install: "pip install -r requirements.txt --use-mirrors"
# command to run tests
script: nosetests

无论你的代码托管在哪里,都应该尽可能实现软件测试的自动化,进而保证项目不断向前推进而不是引入更多bug而倒退。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文