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

时间:2009-11-12 04:57:19

标签: python continuous-integration hudson nosetests

我正在使用Hudson在我们的项目中进行持续集成。我们使用python,git和nose测试进行单元测试。我需要的是Hudson应该在每次构建后执行鼻子测试。为此,我在执行shell部分中添加了以下shell脚本。

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

...

Hudson正确执行这些脚本。但问题是,如果任何测试脚本在这里失败,它将不会运行其旁边的其他脚本。它在第一次错误后停止。我希望它能继续执行所有测试用例。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

我会利用鼻子的能力找到测试并运行它们。

将测试文件重命名为sub / sample1_test.py,sub / sample2_test.py等,然后运行

nosetests sub/

Nose将查找以_test结尾的文件并运行它们。非常便利。请参阅“finding tests”的鼻子文档。

如果不清楚,鼻子会在找到所有测试后运行所有。这样可以防止在所有测试运行之前失败,但如果任何测试都没有通过,则会失败。

答案 1 :(得分:0)

对于我自己的项目,我写了一个fabric python文件来管理所有的单元测试。由于我正在使用django,我的django融入了鼻子和覆盖范围。

以下是我的脚本部分:

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)