我試過寫過a test on specific migration files。基本上我想測試一對遷移之間的數據庫和數據的當前狀態。我用MigrationExecutor
如下:如何在Django中更快地測試遷移?
executor = MigrationExecutor(connection)
old_apps = executor.loader.project_state(self.migrate_from).apps
executor.migrate(self.migrate_from)
# do something here
executor.migrate(self.migrate_to)
我們在這個項目這麼多的遷移文件,因此運行所有這些單元測試需要花費大量的時間。通常情況下,我會遷移模塊設置爲None
在一個settings_test.py
:
MIGRATION_MODULES: {
'my_app': None
}
使用此設置,測試將運行的真快。問題是,遷移文件,以測試(self.migrate_from
和self.migrate_to
)不再能發現:
django.db.migrations.exceptions.NodeNotFoundError: Node ('poleluxe', '0090_auto_previous_migration') not a valid node
所以我不得不在再次測試包括遷移模塊。
有沒有辦法包含遷移文件而不運行所有它們?在我的情況下,我想跳過從0001
到0089
的所有遷移並僅運行0090
(如self.migration_from
)和0091
(如self.migrate_to
)。
我在考慮壓縮前89次遷移,並將結果與0090
和0091
一起放在單獨的文件夾中,然後在測試中引用該遷移文件夾。不過,我不確定這是否是一個很好的解決方案。
你讀過https://www.caktusgroup.com/blog/2016/02/02/writing-unit-tests-django-migrations/ for這種測試? –
是的。事實上,我已經在帖子中列入了那個。 –