在Hudson中使用Python配置“执行Shell”脚本
我在我们的项目中使用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在找到所有测试后,会运行所有的测试。这意味着你不会在所有测试运行之前就失败,但如果有任何一个测试没有通过,你就会失败。