【问题标题】:Run migrations against the test database针对测试数据库运行迁移
【发布时间】:2019-07-10 08:45:20
【问题描述】:

我不希望在每个测试轮之前运行迁移,这就是我使用 --reusedb --nomigrations 运行测试的原因

我仍然需要设置数据库一次。为此我这样做:

python manage.py migrate

我如何告诉migrate 在“测试”模式下运行,以便使用正确的数据库(使用test_)?

【问题讨论】:

  • 你找到这个问题的答案了吗?

标签: python django migration


【解决方案1】:

Django 测试运行器为测试设置单独的数据库,该数据库源自您的settings.py 中的数据库。如果您单独设置测试数据库,测试运行器将使用它。

如果您仍需要在测试数据库中运行一些迁移,您可以运行带有--database 选项的migrate 命令。

python manage.py migrate --database test

您可以在测试用例中指定您的目标数据库:

class TestMyViews(TransactionTestCase):
    databases = {'default', 'other'}

    def test_index_page_view(self):
        call_some_test_code()

migrate command documentation

testcase with database documentation

【讨论】:

  • 是前缀,不是后缀:test_something。我不想在运行manage.py 命令时关心这些细节:我希望 django 做正确的事情,也就是说,它在运行单元测试时已经在做同样的事情。我如何告诉manage.py migrate 使用与运行测试时相同的数据库名称?我有很多数据库,为每个数据库手动调用 manage.py 太容易出错。
  • multi-db test case doc。 Quote: Django 建立了一个测试数据库,该数据库对应于您设置中的 DATABASES 定义中定义的每个数据库,并且至少有一个测试通过数据库引用。如果您指定 --reusedb,它将检查 db 是否不存在,如果存在,将运行迁移,否则它将按原样使用它。您还可以为每个测试用例指定数据库,如 doc.
猜你喜欢
  • 2017-10-15
  • 2012-02-19
  • 1970-01-01
  • 2021-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多