Django: ユニットテストからSQLクエリをカウントする方法はありますか? 質問する

Django: ユニットテストからSQLクエリをカウントする方法はありますか? 質問する

ユーティリティ関数によって実行されるクエリの数を調べようとしています。この関数の単体テストを作成しましたが、関数は正常に動作しています。私がやりたいのは、関数によって実行される SQL クエリの数を追跡して、リファクタリング後に改善があるかどうか確認することです。

def do_something_in_the_database():
    # Does something in the database
    # return result

class DoSomethingTests(django.test.TestCase):
    def test_function_returns_correct_values(self):
        self.assertEqual(n, <number of SQL queries executed>)

編集: Djangoが保留中であることがわかりました機能リクエストこれについては。ただし、チケットはまだオープンです。その間、これについて別の方法はありますか?

ベストアンサー1

Django 1.3以降ではアサートクエリ数まさにこの目的のために利用可能です。

これを利用する 1 つの方法 (Django 3.2 以降) は、コンテキスト マネージャーとして使用することです。

# measure queries of some_func and some_func2
with self.assertNumQueries(2):
    result = some_func()
    result2 = some_func2()

おすすめ記事