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

这是一个愚蠢的方法,

在你的鼻子/插件/中找到 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 的建议,但我确实找到了解决该问题的快速解决方法:将 err 输出通过管道传输到文件中。

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

这使您可以在文件顶部看到清晰的错误打印输出,并在其下方看到最小化的 App Engine 日志输出。

于 2010-12-08T22:33:36.693 回答