2

lxml在 Google App Engine 上托管了一个简单的解析器,并进行了一些nose测试。我知道如何在终端中运行测试,--with-gae但我希望也能够在生产环境中在某些 URL 下运行测试,例如/unit-tests. 我可以进行鼻子测试,例如:

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 沙箱中不可用,但我认为应该有一些解决方法。有没有人尝试过这样的事情?

4

1 回答 1

0

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

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

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

由于我不是唯一遇到此问题的人,我们应该提交一个问题,看看 GAE 人员是否可以让我们更轻松。

于 2012-09-18T15:43:07.103 回答