您是否知道如何强制GAE SDK同步执行任务以进行单元测试以检查任务结果?
您知道如何在单元测试中等待队列中的所有任务执行来检查任务结果吗?
任务的默认异步执行不允许进行简单测试,因此不适合用于使用任务队列更新后检查计数器。
考虑测试这样简单的代码(在完成测试后检查结果)。
payload = pickle.dumps(args, protocol = pickle.HIGHEST_PROTOCOL)
task = taskqueue.Task(url = TASK_ADD_ORDER_REVIEW_COUNTER,
payload = payload)
task.add(queue_name = COUNTERS_QUEQUE)
可以跳过task.add并直接从TASK_ADD_ORDER_REVIEW_COUNTER直接调用代码,但这是一个非常难看的解决方法我觉得应该更简单。
答案 0 :(得分:1)
我建议你将测试分为两部分:
对于1.,我会像这样使用ext.testbed
from google.appengine.ext import testbed
def setUp():
self.testbed = testbed.Testbed()
self.testbed.activate()
self.testbed.init_taskqueue_stub()
def test():
[do whatever triggers tasks]
stub = self.testbed.get_stub('taskqueue')
tasks = stub.get_filtered_tasks() # see (taskqueue_stub.py for details[2])
[verify tasks is what you expected]
对于2.,我会关注handler testing article并向您的任务处理程序发送请求。毕竟,任务被调用为普通的POST请求(params编码为请求参数)。
1 http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/api/taskqueue/taskqueue_stub.py#2453