Django managed = False なモデルをユニットテストするには

Django
2018-02-05 08:02 (8 years ago)
Django managed = False なモデルをユニットテストするには

Django で、モデルの Meta: managed = False にすると、他の App からのユニットテストの時、create() などしようとすると

django.db.utils.ProgrammingError: (1146, "Table 'your_app.your_model' doesn't exist")

というエラーが出ます。

./manage.py inspectdb で作ったモデルをテストしようとする時、よく遭遇します。

その場合、

Simplifying the Testing of Unmanaged Database Models in Django | Caktus Group
このような回避策もありますが、

your_app/tests/__init__.py

import sys

if 'test' in sys.argv:
# テスト用
from ..models import YourModel

YourModel._meta.managed = True

tests/__init__.py にこう書くだけでも充分かな

評価をお願いします
まだ評価がありません
著者は、アプリケーション開発会社 Cyberneura を運営しています。
開発相談をお待ちしています。

アーカイブ