Google app engine Google App Engine中的任务测试强制SDK中的同步任务执行,还是等待所有任务执行?

Google app engine Google App Engine中的任务测试强制SDK中的同步任务执行,还是等待所有任务执行?,google-app-engine,Google App Engine,您知道如何强制GAE SDK同步执行任务以进行单元测试以检查任务的结果吗 您知道如何在单元测试中等待队列中的所有任务执行以检查任务的结果吗 任务的默认异步执行不允许简单测试,因此不适合在更新后使用任务队列检查计数器 考虑测试这样简单的代码(完成测试后检查结果) 可以跳过task.add,直接从task\u add\u ORDER\u REVIEW\u计数器调用代码,但这是一个非常难看的解决方法,我认为应该更简单。我建议您将测试分为两部分: 检查任务是否已添加 检查处理任务的处理程序是否按预期工作

您知道如何强制GAE SDK同步执行任务以进行单元测试以检查任务的结果吗

您知道如何在单元测试中等待队列中的所有任务执行以检查任务的结果吗

任务的默认异步执行不允许简单测试,因此不适合在更新后使用任务队列检查计数器

考虑测试这样简单的代码(完成测试后检查结果)


可以跳过task.add,直接从task\u add\u ORDER\u REVIEW\u计数器调用代码,但这是一个非常难看的解决方法,我认为应该更简单。

我建议您将测试分为两部分:

  • 检查任务是否已添加
  • 检查处理任务的处理程序是否按预期工作
  • 对于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,我将遵循并向您的任务处理程序发送请求。毕竟,任务是作为普通POST请求调用的(参数编码为请求参数)


    我建议您将测试分为两部分:

  • 检查任务是否已添加
  • 检查处理任务的处理程序是否按预期工作
  • 对于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,我将遵循并向您的任务处理程序发送请求。毕竟,任务是作为普通POST请求调用的(参数编码为请求参数)


    一些问题:testbed taskqueue存根是否在同一个SDK线程中执行任务?这意味着它在请求完成之前不会被阻止,就像在SDK中生成任务一样,因为它需要等待完成?任务是如何开始和未完成的?任务队列存根不会执行任务,只将它们保存在队列中供您检查。执行是由SDK完成的,它不是存根的一部分。这是不好的,因为我们需要在同一个SDK线程/调用中测试完整流-任务应该在不使用队列的情况下立即执行。请参阅我在“为什么它如此重要”一文中的评论,以及在测试中实现如此关键的事情有多复杂的代码示例-您提到的“处理程序测试文章”在哪里?下面的链接仅将我带到def _Dynamic_DeleteGroup(self、request、response):TaskQueueStub的方法我猜你们提到了这个:一些问题:testbed taskqueue stub是否在同一个SDK线程中执行任务?意思是说,在请求完成之前它不会像在SDK中生成任务一样被阻止,因为它需要等待完成?任务是如何开始和未完成的?任务队列存根不会执行任务,只将它们保存在队列中供您检查。执行是由SDK完成的,它不是存根的一部分。这是不好的,因为我们需要在同一个SDK线程/调用中测试完整流-任务应该在不使用队列的情况下立即执行。请参阅我在“为什么它如此重要”一文中的评论,以及在测试中实现如此关键的事情有多复杂的代码示例-您提到的“处理程序测试文章”在哪里?下面的链接只将我带到一个def _Dynamic_DeleteGroup(self、request、response):TaskQueueStub的方法,我想您提到过这个: