Python GAE+;NoTest错误:TypeError:order()需要属性或查询顺序;
我在谷歌appengine中有一个小python应用程序,可以手动测试 我想开始使用测试来推动开发,我正在尝试使用nosetests——与gae一起使用 但我在测试我的处理程序时遇到以下错误:Python GAE+;NoTest错误:TypeError:order()需要属性或查询顺序;,python,google-app-engine,Python,Google App Engine,我在谷歌appengine中有一个小python应用程序,可以手动测试 我想开始使用测试来推动开发,我正在尝试使用nosetests——与gae一起使用 但我在测试我的处理程序时遇到以下错误: TypeError: order() expects a Property or query Order; received DateTimeProperty('date') 我的模型使用ndb数据存储 违规的类别是: import datetime from google.appengine.ext
TypeError: order() expects a Property or query Order; received DateTimeProperty('date')
我的模型使用ndb数据存储
违规的类别是:
import datetime
from google.appengine.ext import ndb
class Event(ndb.Model):
date = ndb.DateTimeProperty(indexed=True)
description = ndb.StringProperty(indexed=True)
@staticmethod
def get_next_event_by_date():
next_event = Event.query(Event.date >= datetime.datetime.now()).order(Event.date).fetch(1)
return next_event[0] if next_event else None
如果我从事件查询中删除order子句,那么测试通过OK
有人知道可能是什么问题吗
干杯
Neil查询看起来不错,不过我认为您应该使用classmethod而不是静态方法。这个查询在nosetest之外运行得好吗?谢谢你的建议-一旦我运行了我的测试,我就会重构!。查询在测试之外运行良好。您的测试做什么?您是否在某处设置了“Event.date”而不是实例的值?测试只是检查处理程序的get方法的响应。弹出的查询在处理程序中。进一步调查表明,此版本的查询在应用程序和测试中都有效:
Event.query(Event.date>=datetime.datetime.now()).order(+Event.date)。fetch(1)
注意Event.date之前的“+”仍然不确定为什么没有“+”的版本在应用程序中有效,而不是在测试中。有什么想法吗?添加“+”将调用model.Property的_pos_____)方法,该方法返回PropertyOrder。如果它直接是属性,则使用属性的名称创建PropertyOrder,或者至少这就是要发生的事情。似乎检查Event.date是model.Property的一个子类失败了。考试中绝对没有嘲弄?