测试失败的ndb事务

时间:2013-07-19 10:02:21

标签: python google-app-engine transactions app-engine-ndb

我想单独测试当从模型调用put函数时ndb中的事务失败会发生什么 是否有可能故意使交易失败?

1 个答案:

答案 0 :(得分:3)

来自docs

  

如果函数引发异常,则事务立即中止,NDB重新引发异常,以便调用代码看到它。您可以通过引发ndb.Rollback异常来强制事务以静默方式失败(在这种情况下函数调用返回None)。没有强制重试的机制。

您可以在unittest中引发异常而不是put()例程来模拟该事件,并且它应该模拟相同的结果 - 因为无法放置将导致事务中的所有数据存储事件无论如何都会回滚。 / p>

您可能会发现these kinds个交易例外:

  

在已提交事务并最终成功应用事务的情况下,您可以收到Timeout,TransactionFailedError或InternalError异常。