8

GAE アプリでgaetestbedを使用していますが、非常にうまく機能しています。ただし、テストが正しくないときにノーズが出力する便利なステートメントは、App Engine のログによって洗い流されています。

root: Level 9: Evaling filter expression "datastore_types.Key.from_path(u'User', 85, _app=u'tipfy') == datastore_types.Key.from_path(u'User', 87, _app=u'tipfy')"
root: Level 9: Evaling filter expression "datastore_types.Key.from_path(u'User', 87, _app=u'tipfy') == datastore_types.Key.from_path(u'User', 87, _app=u'tipfy')"
root: Level 9: Evaling filter expression "datastore_types.Key.from_path(u'User', 86, _app=u'tipfy') == datastore_types.Key.from_path(u'User', 87, _app=u'tipfy')"
root: Level 9: Evaling filter expression "datastore_types.Key.from_path(u'User', 87, _app=u'tipfy') == datastore_types.Key.from_path(u'User', 87, _app=u'tipfy')"
--------------------- >> end captured logging << ---------------------

----------------------------------------------------------------------
Ran 28 tests in 3.605s

これを抑制して、クリーンなsomething != something elseエラー メッセージのみを取得する方法はありますか?

4

3 に答える 3

3

これが gaetestbed で機能するかどうかはわかりませんが、django-nose を使用して、以下を settings.py に追加できます。

NOSE_ARGS = ['--logging-clear-handlers', '--logging-filter=-root']

別の回避策は、出力を逆 grep することです。

./manage.py test 2>&1 | egrep -v "^(root|Level)"
于 2011-08-29T05:26:26.470 に答える
2

ここに愚かな方法があります、

あなたのnose/plugins/でcapture.pyとlogcapture.pyを見つけてください

両方のファイルで関数addCaptureToErrを見つけて、修正します。(どちらが正しいかはわかりません。ご自分でテストしてください)

元のコードは次のようになります。

def addCaptureToErr(self, ev, output):
    return '\n'.join([str(ev) , ln('>> begin captured stdout <<'),
                      output, ln('>> end captured stdout <<')])

に変更します

def addCaptureToErr(self, ev, output):
    check_errmsgs(output)
    return '\n'.join([str(ev) , ln('>> begin captured stdout <<'),
                      output, ln('>> end captured stdout <<')])

def check_errmsgs(self,errmsgs):
    for i in range(len(errmsgs)-1,-1,-1):
        item = errmsgs[i].split(":") 
        if(item[2].find("Evaling filter expression")):
            #find msgs you want to ignore
            del errmsgs[i]

それはうまくいくはずです。

于 2010-12-07T22:46:59.060 に答える
0

私はBigbearの提案を試していませんが、問題の簡単な回避策を見つけました。エラー出力をファイルにパイプします。

python run_nosetests.py 2> failures.tmp
gedit failures.tmp &

これにより、ファイルの上部にエラーのクリーンなプリントアウトが表示され、その下にAppEngineログの出力が最小化されます。

于 2010-12-08T22:33:36.693 に答える