我想单独测试当从模型调用put函数时ndb中的事务失败会发生什么 是否有可能故意使交易失败?
答案 0 :(得分:3)
来自docs:
如果函数引发异常,则事务立即中止,NDB重新引发异常,以便调用代码看到它。您可以通过引发ndb.Rollback异常来强制事务以静默方式失败(在这种情况下函数调用返回None)。没有强制重试的机制。
您可以在unittest中引发异常而不是put()例程来模拟该事件,并且它应该模拟相同的结果 - 因为无法放置将导致事务中的所有数据存储事件无论如何都会回滚。 / p>
您可能会发现these kinds个交易例外:
在已提交事务并最终成功应用事务的情况下,您可以收到Timeout,TransactionFailedError或InternalError异常。