首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django测试:如何获得一个只有夹具数据而没有IntegrityErrors的数据库(通过诊断错误源)?

Django测试:如何获得一个只有夹具数据而没有IntegrityErrors的数据库(通过诊断错误源)?
EN

Stack Overflow用户
提问于 2011-12-07 10:11:01
回答 1查看 238关注 0票数 0

我试图使用夹具数据运行测试,并获得臭名昭著的IntegrityError: column user_id is not unique错误。

现在,看看我的夹具,我可以看到我的用户模型的in在我的夹具之间是独一无二的。我推断冲突与(非测试)数据库中的现有数据发生冲突。这是正确的吗?(编辑:这似乎是不正确的-见下文)

我希望能够准确地控制哪些数据可用于我的测试。是否有一种方法可以防止django测试者从我的实时数据库以及我的夹具数据中加载数据?(编辑:是的-见Thibaut的回答)。

编辑:切换到使用干净的内存数据库,根据Thibaut的答案不能解决问题。因此,我推断我现有的dev数据库并不是问题所在。

因此,我有第三个问题:在测试期间加载夹具时,如何诊断IntegrityError的原因?(以及如何修复?)

编辑2:我的问题的解决方案,除了从一个干净的数据库(per Thibault J)开始,也是消除模型从已安装的应用程序提及用户,直到错误不再发生。

DrTyrsa的另一个建议是使用自然键 (而不是查看数据),对于用户来说,这无疑需要一定数量的猴子修补或其他黑客(为用户编辑代码?)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-07 10:16:02

使用不同的数据库进行prod和测试(良好实践)。在settings.py中:

代码语言:javascript
复制
if 'test' in sys.argv:                                                          
    try:                                                                        
        from test_settings import *                                             
    except ImportError:                                                         
        pass

test_settings.py

代码语言:javascript
复制
DATABASES = {                                                                   
    'default': {                                                                
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'memory://testdb',
    }                                                                           
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8413594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档