Google App EngineはPythonのlogging
モジュールをシームレスにサポートしています。しかし、nosetests --with-gae
を使ってコードをテストすると、エラーが発生します。私は自分のアプリケーションのスクリプトのいずれかでimport logging
文を持っていない場合 nose-gaeはmkstempとスレッドに関するエラーを発生させます
..
----------------------------------------------------------------------
Ran 2 tests in 0.068s
OK
しかし、私はimport logging
を使用している場合、私が取得:
..
----------------------------------------------------------------------
Ran 2 tests in 0.067s
OK
Exception AttributeError: "'NoneType' object has no attribute 'mkstemp'" in <bound method DatastoreFileStub.__del__ of <google.appengine.api.datastore_file_stub.DatastoreFileStub object at 0x101a86750>> ignored
Exception ImportError: 'No module named threading' in <bound method local.__del__ of <_threading_local.local object at 0x103bb4520>> ignored
私はそれをきれいにすることができる方法はありますか?
更新
私は試験前に環境変数を設定するスクリプトをハッキング:
export TESTING=1
nosetest --with-gae
その後、私のアプリケーションコードで、
import os
if not bool(os.environ.get('TESTING')):
import logging
しかし、結局のところ、import os
も原因nosetest
と同じエラーが発生します。
説明がつかない鼻掛けを使用して奇妙なエラーが発生することがあります([this](http://stackoverflow.com/questions/8108130/gae-kinderror-when-getting-entities-via-listproperty )と[this](http://stackoverflow.com/questions/8966685/picklingerror-cant-pickle-class-its-not-the-same-object-as-in-gae))。私は自分のコードを変更することでそれらの周りを回ることができましたが、それは非常にhackishと不安定な感じ。 –
@ジェフ:それは変です。たとえば、これらのエラーを吐き出すコードスナップショットがあります。私の不満の中で、私はコードをハックし、時には 'import'を動かします。ときにはエラーが発生することもあります。私があきらめて手作業で(コミットリルートを使わずに)元のコードスナップショットを取り戻すと、エラーは消えてしまいます。/ – Kit
私はあなたの痛みを感じます。:) –