【问题标题】:How to run Django unit tests against a postgre database如何针对 postgre 数据库运行 Django 单元测试
【发布时间】:2019-03-08 00:11:06
【问题描述】:

我正在使用 coverage.py 和 django-nose 来运行单元测试。使用“默认”sqlite 数据库一切正常。然而,当我将它换成 postgre 数据库时,我收到以下错误:

django.db.utils.ProgrammingError:关系“authentication_user”不存在

在 test_settings.py 中:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'HOST': 'localhost',
            'PORT': 5432,
            'NAME': 'testing_db',
            'USER': 'user_name',
            'PASSWORD': 'password'
        }
}

用于运行测试的命令(位于“tests”文件夹中):

coverage run manage.py test tests

奇怪的是,如果我如下运行单个 TestCase,测试运行良好(仅在运行一组测试时发生错误):

coverage run manage.py test tests.test_something

对这里出了什么问题有任何想法吗?

【问题讨论】:

  • 您找到解决方案了吗?我遇到了同样的问题。
  • @Sam 据我所知,其中一个测试用例可能存在错误,这将阻止整个套件运行。我会尝试一个一个地运行它们,直到你确定哪一个有问题。

标签: python django postgresql


【解决方案1】:

在您完成项目设置后,为了进入 ADMIN 页面,您必须执行以下命令:

python manage.py createsuperuser

由于您将数据库切换到 postgres,您应该从项目根文件夹运行命令以使用

manage.py

脚本,并创建一个新的超级用户。 之后,您应该运行迁移到新数据库并完成。 告诉我进展如何。

参考:python superuser doc

【讨论】:

    猜你喜欢
    • 2012-02-19
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 2016-12-19
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    相关资源
    最近更新 更多