我最近在暫存環境中部署了一些破損的代碼。新代碼失敗Django's system checks(以下錯誤消息轉載,雖然這個問題更一般)。我們的單元測試套件乾淨地運行。我的問題是:在部署代碼之前,確保系統檢查運行的正確方法是什麼?將Django的系統檢入到單元測試套件中?
最初我猜測測試能夠在不執行系統檢查的情況下運行,因爲我們使用pytest而不是Django的測試運行器。但是,添加一個簡單的測試並調用manage.py test
表明Django測試運行器也運行時未執行系統檢查。
我的一個想法是在我們的構建管道中運行manage.py check
命令,並且在構建時返回非零值。這種方法的缺點是它會在代碼被提交之前引入另一個開發人員步驟(例如,除了運行單元測試套件外,還記得運行manage.py check
)。
另一個想法是添加一個運行系統檢查的單元測試。這在技術上似乎是可行的,但是它與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'.