Skip to main content
 首页 » 编程设计

python之在 GAE 沙箱中运行 Python 的 nose 单元测试

2025年05月04日9JustinYoung

我有一个简单的 lxml 解析器托管在 Google App Engine 上,带有一些 nose 测试。我知道如何使用 --with-gae 在终端中运行测试,但我希望也能够在生产环境中使用 /unit-tests 等 URL 运行测试。我可以像这样进行 Nose 测试:

import nose 
nose.run() 

但它以错误结束:

File "/Users/martin/develop/gae/artova-kina/nose/core.py", line 168, in parseArgs 
    os.chdir(self.config.workingDir) 
AttributeError: 'module' object has no attribute 'chdir' 

这对我来说很有意义,因为 chdir 在 GAE 沙箱中可能不可用,但我认为应该有一些解决方法。有没有人试过这样的事情?

请您参考如下方法:

我没有使用 nose,但我在“实时服务器”测试用例(使用 django-nonrel)上看到了类似的问题。

在我看来,dev_appserver 设计为单线程。在每个 wsgi 条目期间,它会重新配置一堆 python 系统对象,例如 os 被重新配置,因此您无法写入文件系统(您不能在 appengine 上执行此操作)。这些重新配置在处理 wsgi 请求后恢复(我认为)。

但是,如果您有另一个线程在处理请求时执行任何操作,您就会遇到这些问题。在 dev_appserver.py 处理请求时,您需要同步您的线程以使其不运行。由于这是线程问题,因此有点随机。我发现我的测试有时会通过,有时会因这个问题而失败。

因为我不是唯一遇到这个问题的人,我们应该提交一个问题,看看 GAE 人员是否可以让我们更容易。