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

(Comments)

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 にこう書くだけでも充分かな

Currently unrated

Comments

Recent Tweets

  • 大坂昌彦

    大坂昌彦 @masahiko_osaka

    ytyng

    ついに犯人がわかってしまいました! ナル、一昨日にも僕だったので、昨日の人しかいません!! ペダルにガムテープ貼っても良いけど、剥がして帰って欲しい。散々、自分の足で踏みつけたガムテープを何で次の人が剥がさなきゃならないの??自分… https://t.co/Contz66ZK9
    1 month ago

  • ytyng

    ytyng @ytyng

    Shopify の在庫数更新API GraphQLの場合: 一括更新できる 絶対値更新できない REST API の場合: 一括更新できない 絶対値更新できる なんなのそれ https://t.co/0QyibNQXdt
    1 month, 3 weeks ago

  • ytyng

    ytyng @ytyng

    #bulma スペーシングヘルパー、マージされてる! もうこれBootstrapじゃん https://t.co/uI8fZ6lAOw
    1 month, 3 weeks ago

Recent Posts

Archive

2020
2019
2018
2017
2016
2015
2014
2013
2012
2011

Categories

Authors

Feeds

RSS / Atom