3

私はdjangoの大きな単体テストテストをデバッグしています&通常のデバッグツールを使用してそれを行いたいです:

  1. runserverを介してdjango adminのdbを見る
  2. 手動でデータベースを調べます。

unittest は、テストの db 側を実行しているトランザクションをコミットしていないため、どちらも機能しません。

明らかな解決策は、ユニットテストにトランザクションを使用しないように指示するか、何らかの方法でコミットするようにすることです。もう 1 つの方法は、runserver がトランザクションに接続できるようにするカスタム設定ファイルを作成することです。しかし、最初のアイデアは本当に簡単なはずです。何か案は?MySQLとdjango 1.3.1を使用しています

4

1 に答える 1

8

TransactionTestCaseではなく、テストケースの親クラスとして使用することを検討してくださいTestCaseTransactionTestCaseのトランザクション動作を使用しないTestCaseため、データベースの状態を検査する必要がある時点でコミットできます。

さらに、単体テストが非常に大きいため、実行中にデータベースの状態を検査する必要がある場合は、おそらく間違っています。単体テストでは、1つのことと1つのことだけをテストする必要があり、どの時点でも状態が何であるかはかなり明白である必要があります。優れた単体テストを作成するための優れたアドバイスについては、Djangoでのテストに関するCarlMeyerのPycon2012の講演を参照してください。

于 2012-04-17T08:33:00.753 に答える