每次运行时都不会创建测试数据库的Django单元测试

CIF*_*CIF 23 django unit-testing

似乎"manage.py test"每次运行测试时都会创建测试数据库.有没有办法阻止每次运行测试时创建测试数据库,但只是截断数据(刷新)?

我的表几乎是大约40个表(即使是单个应用程序,也不是整个项目),每次运行测试时都会让我生病.

Kim*_*Kim 31

从Django 1.8开始,在调用manage.py时可以使用--keepdb标志

Django 1.8中的新增功能:您可以通过向test命令添加--keepdb标志来防止测试数据库被破坏.这将在运行之间保留测试数据库.如果数据库不存在,将首先创建它.还将应用任何迁移以使其保持最新.(https://docs.djangoproject.com/en/1.8/topics/testing/overview/#the-test-database)

所以你的电话看起来如下:

python manage.py test --keepdb
Run Code Online (Sandbox Code Playgroud)

或者使用简写-k它可能看起来像这样:

python manage.py test -k
Run Code Online (Sandbox Code Playgroud)

  • @Matt但是,每次运行测试时都会应用迁移(参见[django-source](https://github.com/django/django/blob/master/django/db/backends/base/creation) .py#L63L69)供参考).但是,运行具有更高详细程度模式的测试(`python manage.py test -k --verbosity 2`),您将看到仅检查迁移,但如果之前已应用并且之间未更改,则不会重新应用迁移.测试运行. (3认同)

Tom*_*ski 13

根据您的需求,您有几个选择: