【问题标题】:Django and pytest, multiple databases, use only one databasedjango和pytest,多个数据库,只用一个数据库
【发布时间】:2021-05-13 12:42:46
【问题描述】:

我的项目中有 2 个数据库:

DATABASES = {
    'default': env.db('DEFAULT_DATABASE_URL'),
    'second': env.db('SECOND_DATABASE_URL'),
}

当我只有一个数据库时,所有需要访问数据库的测试都顺利通过,但是当我连接第二个数据库时,所有测试都开始失败并出现错误 - django.db.utils.IntegrityError: duplicate key value violates unique constraint

据我了解,测试为每个数据库运行两次并因此崩溃。有没有办法告诉 pytest 只使用一个数据库进行测试?

一项测试的示例:

@pytest.mark.django_db
def test_complaint_reasons(client: APIClient):
    reasons_count = 12
    Profile.create_batch(reasons_count)

    client.force_login(Factory())
    response = client.get(reverse('url'))
    assert response.status_code == status.HTTP_200_OK
    assert len(response.data) == reasons_count
    jsonschema.validate(response.data, ProfileComplaintReasonsSchema)

【问题讨论】:

    标签: django django-rest-framework pytest pytest-django


    【解决方案1】:

    改用这个标记: @pytest.mark.django_db(databases=['default', 'second'])

    但要小心,因为it's still experimental

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 2011-10-19
      • 1970-01-01
      • 2013-04-26
      • 1970-01-01
      • 1970-01-01
      • 2013-04-25
      相关资源
      最近更新 更多