私は最近、ステージング環境にいくつかの壊れたコードを配備しました。新しいコードはDjango's system checksで失敗しました(この問題はより一般的ですが、以下のエラーメッセージが再現されています)。私たちのユニットテストスイートはきれいに走った。私の質問はこれです:コードを展開する前にシステムチェックを確実に実行するための正しい方法は何ですか?ユニットテストスイートにDjangoのシステムチェックを組み込む?
最初は、Djangoのテストランナーの代わりにpytestを使用しているため、システムチェックを実行せずにテストを実行できたと推測しました。しかし、簡単なテストを追加してmanage.py test
を呼び出すと、Djangoテストランナーはシステムチェックを実行せずに実行されることが示されました。
ビルドパイプラインでmanage.py check
コマンドを実行し、ゼロ以外の戻り値でビルドに失敗することを考えました。このアプローチの欠点は、コードをコミットする前に別の開発者のステップを導入することです(ユニットテストスイートの実行に加えてmanage.py check
を実行するなど)。
もう1つのアイデアは、システムチェックを実行する単体テストを追加することです。これは技術的に実現可能なようですが、Djangoのシステムチェックフレームワークの目的と設計と一貫していますか?
私は、the documentationには私が求めているところではうまくいかないカスタムチェックのためのテストを書くためのセクションがあることに注意してください。私はDjangoのドキュメントのテストにシステムチェックを組み込むことに関する他のドキュメントは見ていません。
エラーメッセージ:
SystemCheckError: System check identified some issues:
ERRORS:
myapp.MyCoolModel.linked_groups: (fields.E304) Reverse accessor for 'MyCoolModel.linked_groups' clashes with reverse accessor for 'MyCoolModel.primary_group'.
HINT: Add or change a related_name argument to the definition for 'MyCoolModel.linked_groups' or 'MyCoolModel.primary_group'.
myapp.MyCoolModel.primary_group: (fields.E304) Reverse accessor for 'MyCoolModel.primary_group' clashes with reverse accessor for 'MyCoolModel.linked_groups'.
HINT: Add or change a related_name argument to the definition for 'MyCoolModel.primary_group' or 'MyCoolModel.linked_groups'.