0

私は最近、通常の古いテストの使用から WebTest とこの「No Database Test Runner」の使用に切り替えました

from django.test.simple import DjangoTestSuiteRunner

class NoTestDbDatabaseTestRunner(DjangoTestSuiteRunner):
    def setup_databases(self, **kwargs):
        pass

    def teardown_databases(self, old_config, **kwargs):
        pass

これは、何らかの形でデータベースにアクセスする必要があるテストの例です...

何が起こっている?私のテストはデータベースにヒットしていますが、古い状態にロールバックしていますか? テストごとに、作成された各リストの ID が増分されていることがわかります。

    def test_image_upload(self):
        form_data = self.listing_form_defaults.copy()
        form_data['images-TOTAL_FORMS'] = '3'

        upload_files = [
            ('images-0-image', 'testdata/1.png'),
            ('images-1-image', 'testdata/2.png'),
            ('images-2-image', 'testdata/3.png'),
        ]

        form_resp = self.app.post(
            reverse('listing_create'),
            form_data,
            upload_files=upload_files,
            user='kmike'
        ).follow()

        assert len(form_resp.context['listing'].images.all()) == 3

form_resp.context['listing'].images.all()データベースにヒットする必要がありprintます。私はそれを実行しましたが、データベースからのデータベースレコードがありました。

私はただ混乱しています-私のテストは非常に速く実行され、実際にデータベースを変更していないようです.これはどのように機能/発生していますか?!

4

1 に答える 1