django プロジェクトの test.py 内にさまざまな Testcase クラスを配置したいと考えています。モデルのテスト (crud) 用に 1 つ、ビューのテスト用に 1 つなど。次のクラスがあります。
class EntryModelTest(TestCase):
LOG = logging.getLogger(__name__)
@classmethod
def setup_database(cls):
#database initialization
@classmethod
def setUpClass(cls):
super(EntryModelTest, cls).setUpClass()
cls.setup_database()
cls.myModel = MyModel.objects.get(pk=1)
#some queries (additions) that use things that were added in setup_database()
そして2番目のテストケース
class MyCalViewsTest(TestCase):
LOG = logging.getLogger(__name__)
@classmethod
def setup_database(cls):
#exactly the same code as above testcase(I know I could use Inheretiance. Will refactor)
@classmethod
def setUpClass(cls):
#The same as above testcase
cls.myModel = MyModel.objects.get(pk=1) #this gives the following error: DoesNotExist: PracticeData matching query does not exist.
MyModel インスタンスは setup_database メソッドで作成されます。理由はよくわかりません。すべてのテストケース クラスが実行された後にテスト データベースが破棄された場合、setup_database メソッドは pk=1 で MyModel インスタンスを再作成する必要があるため、存在していたはずです。テスト データベースが破棄されない場合は、pk=1 の MyModel インスタンスが既に存在するため、問題は発生しないはずです。どんな助けでも大歓迎です。