2

Google App Engine でホストされている単純なlxmlパーサーと、いくつかのnoseテストがあります。ターミナルでテストを実行する方法は知っていますが--with-gae、本番環境でもテストを実行できるようにしたい/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'

おそらくGAEサンドボックス内では利用できないため、これは私には理にかなっていchdirますが、回避策が必要だと思います。誰かがこのようなことを試しましたか?

4

1 に答える 1

0

私は鼻を使用していませんが、「ライブ サーバー」テストケース (django-nonrel を使用) で実行されている同様の問題を見てきました。

dev_appserver はシングル スレッド用に設計されているようです。各 wsgi エントリ中に、多数の Python システム オブジェクトが再構成されます。たとえば、os が再構成されるため、ファイル システムに書き込むことができません (これは appengine では実行できません)。これらの再構成は、wsgi リクエストが処理された後に復元されます (と思います)。

ただし、リクエストの処理中に別のスレッドが何かを実行している場合、これらの問題が発生します。dev_appserver.py がリクエストを処理している間は、スレッドが実行されないように同期する必要があります。スレッドの問題なので、ちょっとランダムです。この問題で、テストが成功することもあれば、失敗することもあります。

これに遭遇したのは私だけではないので、問題を報告して、GAE 担当者が私たちにとってより簡単にできるかどうかを確認する必要があります。

于 2012-09-18T15:43:07.103 に答える