在GAME沙箱中运行Python nose单元测试

时间:2012-09-18 12:15:38

标签: python google-app-engine nose

我在Google App Engine上托管了一个简单的lxml解析器,并进行了一些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沙箱中不可用,但我认为应该有一些解决方法。有人试过这样的事吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

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