Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python GAE+;NoTest错误:TypeError:order()需要属性或查询顺序;_Python_Google App Engine - Fatal编程技术网

Python GAE+;NoTest错误:TypeError:order()需要属性或查询顺序;

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

我在谷歌appengine中有一个小python应用程序,可以手动测试

我想开始使用测试来推动开发,我正在尝试使用nosetests——与gae一起使用

但我在测试我的处理程序时遇到以下错误:

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的一个子类失败了。考试中绝对没有嘲弄?