私は django プロジェクトに取り組んでおり、そのモデルと関係のデータベースを持つとともにactivity_logs
、プロジェクト ディレクトリの外部と呼ばれるログ ディレクトリに書き込み、書式設定されたユーザー アクティビティをユーザーごとに 1 つのファイルで追跡します。これは、データベース テーブルにこの情報を保持する代わりのファイル構造ベースのソリューションです。これは、DB から一部のストレージをオフロードし、そのようなアクティビティをフォーマットして表現するのが比較的簡単であるためです。おそらく、この種のデータをデータベースに保存することをお勧めする人もいるかもしれませんが、それは問題ありませんが、これらすべてから、回答の助けが必要な疑問があると思います.
この django プロジェクトには、アプリごとに 1 つずつ、広範なテスト スイートを持つ複数のアプリがあります。さらに、logging.py
ロギング機能 (ログ ファイルへの/からのアクティビティの書き込み/読み取り) をカプセル化するファイルがあるため、テスト スイート内のテスト ケースと表示関数 (およびその他のさまざまなユーティリティ関数) の両方で、これらのロギングが使用されます。これらのユーザー アクティビティを保存し、モデルの関係に基づいてそれらを取得して、ユーザー通知システムをエミュレートするための関数。ロギング モジュールはこのロギングを処理するため、書き込み先を知る必要があるため、ディレクトリ構造は次のようになります。activity_logs
ユーザー ログ ファイルが書き込まれ、新しいユーザー用に 1 つが作成され、データベースから削除されたユーザー用に 1 つが削除されます。このプロジェクトで行いたい最新の変更の 1 つは、このログ機能をテストするための別のログ ディレクトリを作成することですtest_activity_logs
。実際のユーザー用のディレクトリ。
私の問題はこれです:実行時に、どの実行開始点でもシステムにどのように伝えることができますか(djangoテストClient
オブジェクトを介したビュー関数呼び出し、テストケース、URL経由で行われた実際のHTTPリクエストなど) 、activity_logs
またはtest_activity_logs
ディレクトリ内をいつ調べるか? 実際のユーザーまたはテスト ユーザーのどちらに対して新しい情報を生成しているかにのみ依存しますが、ユーザーはシステム内のユーザーであり、いくつかのログ関数を呼び出してログに書き込むこれらの関数に指示しようとすると、いくつかの問題に直面しています。テスト ログ ディレクトリと通常のディレクトリ。たとえば、私が試みている 1 つのアプローチは、キーワード引数 (kwarg) をロギング関数に渡して、次のように、どのディレクトリを読み書きするかを認識できるようにすることです。
self.assertTrue(activity_has_been_logged(ACTIVITY_ACCOUNT_CREATED, user.get_profile(), use_test_activity_log_directory=True) == True)
呼び出された kwarg は、テスト アクティビティ ログ ディレクトリを読み取るためにuse_test_activity_log_directory=True
呼び出されたロギング関数に通知します。残念ながら、少し融通が利かない (しかし許容できる) ことは別として、これは django テストオブジェクトが GET または POST リクエストを URL 経由でビュー関数に送信し、アクティビティをログ ファイルに書き込むactivity_has_been_logged
状況を解決しません。client
response = client.post(propose_match_url, post) #Can't write to test_log_directory if by default it writes to regular directory!
クライアントがこのkwargをこれらのビュー関数に渡すにはどうすればよいですか? これを行うことは完全に可能だと思いますが、これらのkwargsをいじるのが最善の方法なのか、プロジェクト設定ファイルにグローバル変数を作成するのかはわかりませんが、競合状態で問題が発生する可能性があります可変共有変数を使用します。
あなたの助けは素晴らしいでしょう。前もって感謝します!