Checks — overview¶
django-test-doctor ships fifteen checks in 0.10. Each one is a pluggable
class discovered via the django_doctor.checks entry point group, so
third-party packages can contribute more.
| ID | Severity on failure | Needs DB write | Class of bug caught |
|---|---|---|---|
system |
WARNING → CRITICAL | no | Whatever ./manage.py check already finds |
security |
WARNING → CRITICAL | no | Deployment settings, weak SECRET_KEY, DEBUG |
models |
INFO → ERROR | no | Missing __str__, SET_NULL on NOT NULL FK |
fk_redundant |
WARNING | no | Column duplicating a value reachable via a FK |
migrations |
WARNING / ERROR | no | Unapplied migrations, schema drift |
admin |
ERROR | no | Typos in list_display / list_filter / ordering |
forms |
ERROR (INFO when arg-req) | no | Form.__init__ crashes on blank / empty POST |
forms_meta |
ERROR | no | Orphan cleaned_data[x] = … on NOT NULL column |
drf |
ERROR (+ INFO) | no | Serializer Meta.fields ↔ model mismatch |
templates |
WARNING / ERROR | no | Broken {% url %} / {% static %}, template syntax |
views |
WARNING | no | First-party view with no auth guard |
autogen |
ERROR | no | int(x.split(sep)[-1]) auto-gen without try/except |
update_fields |
ERROR | no | save(update_fields=…) dropping recomputed fields |
urls |
CRITICAL on 5xx | yes (users) | GET on any URL returns 5xx |
post_smoke |
CRITICAL on 5xx | yes (savepoint) | POST to CreateView / UpdateView returns 5xx |
Ordering¶
Checks declare a numeric order and run from lowest to highest. The
default order groups cheap static checks first, then instance-free
introspection, then the DB-touching smoke checks. See each check's page
for its specific order number.
Severity ladder¶
--ci exits non-zero on findings ≥ fail_on (default
["critical", "error"]).
Groups in these docs¶
- system & security — runtime and deployment posture
- urls & post_smoke — HTTP-level smoke tests
- forms & forms_meta — form lifecycle (init + clean + save)
- models & migrations — data-layer hygiene
- admin — Django admin registrations
- drf — Django REST framework serializers
- templates — template coherence (
{% url %}/{% static %}) - views — view-level authorization guards
- autogen — unsafe auto-generated ID parsing
- update_fields —
save(update_fields=…)consistency - fk_redundant — columns duplicating a value reachable via a FK