在Hudson中使用Python配置“执行Shell”脚本

1 投票
2 回答
2501 浏览
提问于 2025-04-15 15:55

我在我们的项目中使用Hudson进行持续集成。我们使用Python、Git和nose测试来进行单元测试。我希望Hudson在每次构建后都能执行nose测试。为此,我在执行shell部分添加了以下脚本。

$ nosetests /sub/test_sample1.py
$ nosetests /sub/test_sample2.py
$ nosetests /sub/test_sample3.py

...

Hudson能够正确执行这些脚本。但问题是,如果其中任何一个测试脚本失败了,后面的脚本就不会继续执行,它会在第一个错误处停止。我希望它能够继续执行所有的测试用例。我该怎么做呢?

2 个回答

0

为了我自己的项目,我写了一些 fabric 的 Python 文件,用来管理所有的单元测试。因为我在用 Django,所以我把 Django 和 nose 还有 coverage 结合在一起使用。

以下是我部分脚本的内容:

local('%(local_virtual_env)s/Scripts/activate.bat'
      ' & cd %(local_project_path)s/configs/common'
      ' & python manage.py test test1 ' 
      '--settings=myprofile.configs.local.settings_local '
      '--with-coverage --with-xunit --with-xcoverage '
      '--cover-tests --cover-erase --cover-inclusive '
      '--cover-package=myprofile.apps' % env,
      capture=False)
1

我会利用nose这个工具来自动找到测试并运行它们。

你可以把你的测试文件重命名成像sub/sample1_test.py、sub/sample2_test.py这样的格式,然后只需要运行

nosetests sub/

nose会自动查找以_test结尾的文件并执行它们。这非常方便。你可以查看nose的文档,了解如何“找到测试”。

如果还不太清楚,nose在找到所有测试后,会运行所有的测试。这意味着你不会在所有测试运行之前就失败,但如果有任何一个测试没有通过,你就会失败。

撰写回答