django - 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'])
但是要小心这个,因为它仍然是实验性的。
推荐阅读
- android - 如何在房间迁移语句中使用 Kotlin 字符串模板
- validation - Salesforce - 验证规则 (RegEX)
- java - 从屏幕修改时如何自动加载 Spring Security
- linkedin - Linkedin 身份验证问题 - 访问权限不足:GET /people/~:
- hyperledger-fabric - 超级账本结构:同一组织中的同行尝试使用错误的地址来设置链码监听地址
- vue.js - 当我调用 created() 钩子时未定义的 mapState 组件
- ios - iOS:如何计算两个日期之间的毫秒数
- android - 如何将以下json数据保存到两个表(模型表和变体表)中,并根据模型获取数据
- javascript - Darksky api没有显示正确的时间
- python - 无论用户输入是否有大写字母,如何从 df 获取值