0

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 インスタンスが既に存在するため、問題は発生しないはずです。どんな助けでも大歓迎です。

4

0 に答える 0