3

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

4

1 回答 1

3

文档

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

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

您可能会发现以下类型的事务异常:

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

于 2013-11-15T02:07:56.803 回答