使用当前稳定的 django_nose (0.1.3) 模型甚至无法正确找到和加载,运行测试时出现以下异常:
django.db.utils.DatabaseError: (1146, "Table 'test_appdatabase.django_site' doesn't exist")
使用 django_nose 的 git 版本,我设法将我的模型正确地创建到测试数据库中,但是它们都是空的,使用 Django 的 testrunner 我将一些基本数据加载到表中,例如 django_site 和 auth_permission 表:
django_site
id domain name
1 example.com example.com
当我在安装和设置 django_nose 的情况下运行测试套件时,出现以下异常:
DoesNotExist: Site matching query does not exist.
有任何想法吗?
更新:使用 -v 2 运行,它似乎正在为应用程序运行同步后处理程序 (syncdb)
Running post-sync handlers for application sites
Creating example.com Site object
Adding content type 'sites | site'
Adding permission 'sites | site | Can add site'
Adding permission 'sites | site | Can change site'
Adding permission 'sites | site | Can delete site'
所以它似乎正在添加它们,但在某个地方它们被删除了。
进一步更新:
查看 MySQL Query 日志,事件顺序是
- 在测试数据库上做一个同步数据库
- 截断每个表(为什么?,这是我的问题所在)
- 运行测试
查询日志中的截断示例:
TRUNCATE `django_site`
为什么表被截断?是否这样测试不会相互污染,有没有办法禁用它?
我相信这是最后的更新:
使用标准的 django 跑步者,同样的事情会发生,
- 表被创建
- 同步后插入数据
- 表格被截断
- 调用更改表以设置 AUTO_INCREMENT = 1
除了下一步:
数据被重新插入
插入
django_site
(domain
,name
)值('example.com','example.com')
不知道为什么会发生这种情况,但不是 django_nose