我现在正在对已经存在的代码进行单元测试。我面临下一个问题:
在运行 syncdb 创建测试数据库后,Django 会自动填充几个表,如 django_content_type 或 auth_permissions。
然后,想象一下我需要运行一个复杂的测试,比如检查用户注册,这将需要大量的数据表和它们之间的连接。
如果我尝试使用我现有的整个数据库来制作夹具(这对我来说相当方便) - 我会收到类似这里的错误。发生这种情况是因为 Django 已经填充了 django_content_type 之类的表。
下一种可能的方法是使用 django dumpdata --exclude 选项来填充已填充的 syncdb 表。但这也不能很好地工作,因为如果我从我的数据库和用户权限表中获取用户和用户组对象,这是由 syncdb 自动创建的,我会收到错误,因为连接它们的主键现在指向错误。这在“夹具地狱”部分更好地描述,但那里显示的解决方案看起来不太好)
我看到的下一个可能的方案是下一个:
- 我正在运行我的测试;Django 创建测试数据库,创建 syncdb 并创建所有这些表。
- 在我的测试设置中,我删除了这个数据库,创建了新的空白数据库。
- 也在测试设置中从现有数据库加载数据转储