微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

django和pytest,多个数据库,只用一个数据库

如何解决django和pytest,多个数据库,只用一个数据库

我的项目中有 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)

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。