4

私はラップされた関数を持っていて、@transaction.commit_on_successDjango 単体テストを実行しています。

関数は貼り付けるには長すぎますが、いくつかの擬似コードは次のとおりです。

@transaction.commit_on_success
def func():
  order = Order.create()
  order.save()
  OrderItem.create(order=order)
  test = 10/0 # make sure we run into an error

次に、単体テストで次のことを確認しますlen(Order.objects.all()) == 0

私の関数は有効な Order オブジェクトを返しているので、トランザクションはコミットされています。

ここで何が間違っていますか?

編集:私はDjango 1.5を使用しています

4

3 に答える 3

1

MySQL を使用している場合、テーブルがトランザクションをサポートしていない可能性があります。詳細については、トランザクションに関するDjango のドキュメントを参照してください。

于 2015-08-29T05:13:41.513 に答える