私のdjangoアプリは、管理されていないテーブルで動作し、モデルで次のように定義されています:
class Meta:
managed = False
db_table = 'mytable'
個人をインポートする簡単なテストを実行すると、次の結果が得られます。
(person)bob@sh ~/person/dapi $ > python manage.py test
Creating test database for alias 'default'...
DatabaseError: (1060, "Duplicate column name 'db_Om_no'")
tests.py は次のように非常に単純です。
import person.management.commands.dorecall
from person.models import Person
from django.test import TestCase
import pdb
class EmailSendTests(TestCase):
def test_send_email(self):
person = Person.objects.all()[0]
Command.send_email()
「マネージド= Falseのモデルを含むテストの場合、テストセットアップの一部として正しいテーブルが作成されるようにするのはあなた次第です。」と書かれているdjangoドキュメントを読みました。したがって、適切なテーブルを作成しなかったことが問題であることを理解しています。test_person
テストフレームワークが作成したデータベースにテーブルのコピーを作成する必要がありますか?
テストを実行するたびに、test_person
データベースが破壊され (私が思うに) 再セットアップされるので、test_person
. 私はこれについて正しく考えていますか?
アップデート:
SOでこの質問を見て、に追加しManagedModelTestRunner()
ましたutils.py
。実行ManagedModelTestRunner()
されますが(挿入して確認されますpbd.set_trace()
)、それでもDuplicate column name
エラーが発生します。実行してもエラーは発生しませんpython manage.py syncdb
(テーブルが既に作成されているため、これはあまり意味がないかもしれませんが、テーブルを削除して syncdb を再実行し、手がかりが得られるかどうかを確認します)。