【问题标题】:Is it possible to run GAE tests in Hudson?是否可以在 Hudson 运行 GAE 测试?
【发布时间】:2010-12-15 02:16:53
【问题描述】:

我有一套使用 nose 调用的 App Engine 测试。当我从终端运行它们时,每个测试都会成功完成,并且会生成所有报告,例如 coverage

但是,如果我尝试从 Hudson 调用相同的命令,我会从覆盖中得到以下失败:

nose.failure.Failure.runTest (from Failure)

Parent module 'coverage' not loaded
-------------------- >> begin captured logging << --------------------
root: INFO: zipimporter('/home/wraith/dev/projects/myapp/lib/python2.5/site-packages/NoseGAE-0.1.7-py2.5.egg', '')
root: WARNING: Could not read datastore data from /tmp/nosegae.datastore
root: WARNING: Could not initialize images API; you are likely missing the Python "PIL" module. ImportError: No module named Image
root: INFO: zipimporter('/home/wraith/dev/projects/myapp/lib/python2.5/site-packages/gaetestbed-0.12dev_r30-py2.5.egg', '')
root: INFO: zipimporter('/home/wraith/dev/projects/myapp/lib/python2.5/site-packages/WebTest-1.2.1-py2.5.egg', '')
root: INFO: zipimporter('/home/wraith/dev/projects/myapp/lib/python2.5/site-packages/setuptools-0.6c11-py2.5.egg', '')
root: INFO: zipimporter('/home/wraith/dev/projects/myapp/lib/python2.5/site-packages/WebOb-0.9.8-py2.5.egg', '')
root: INFO: zipimporter('/home/wraith/dev/projects/myapp/lib/python2.5/site-packages/PyYAML-3.09-py2.5-linux-x86_64.egg', '')
root: DEBUG: Could not import "strop": Disallowed C-extension or built-in module
--------------------- >> end captured logging << ---------------------

但是,如果我删除对 coverage 的调用,我的测试仍然会失败。

我已经使用 Hudson 成功运行了 Python 项目。是否有让我绊倒的 GAE 细微差别?

【问题讨论】:

    标签: google-app-engine hudson code-coverage nose nosetests


    【解决方案1】:

    比较手动运行和使用 hudson 运行时的环境。

    我怀疑初始化发生在 .profile 文件中。当 Hudson 生成一个 shell 时,它不会被调用。因此,要么将此初始化放入环境初始化中,要么在受影响的构建步骤中手动调用 .profile 文件。

    【讨论】:

    • 我没有 .profile 文件,只有 .bashrc,它的变量被很好地拾取。我应该改用 .profile 吗?这是应该存储在 /etc/ 中的系统范围的文件吗?
    • 我发现在每个 Hudson 步骤中设置显式路径可以解决我遇到的任何问题。例如,PYTHONPATH=.:$HOME/dev/modules/contrib:$HOME/dev/sdks/google_appengine。这有点麻烦,但它确实有效。感谢您为我指明正确的方向。
    • 您可以避免为每个构建步骤设置环境变量。您可以在 Hudson 主配置中定义环境变量。然后将为每个作业设置此环境变量。这也可以在节点级别完成(我使用这种方法)。还有一个插件,使您能够在作业级别设置变量。比把它放在每一步都容易一点。 :)
    猜你喜欢
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 2015-06-10
    • 2018-04-22
    • 2016-02-05
    相关资源
    最近更新 更多