使用当前稳定的django_nose(0.1.3),模型甚至没有正确找到并加载,运行测试时出现以下异常:
django.db.utils.DatabaseError: (1146, "Table 'test_appdatabase.django_site' doesn't exist")
使用gj版本的django_nose我设法将我的模型正确地创建到测试数据库中,但它们都是空的,使用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查询日志,事件序列为
查询日志中的示例截断:
TRUNCATE `django_site`
为什么表被截断了?是否这样测试不会相互污染,有没有办法禁用它?
我相信这是最后的更新:
使用标准的django跑步者,同样的事情发生了,
除了下一步:
将数据插回
INSERT INTO django_site
(domain
,name
)VALUES('example.com','example.com')
不确定为什么会发生这种情况,而不是django_nose
答案 0 :(得分:1)
sites
中的INSTALLED_APPS
应用是?鼻子测试运行器扩展了django的测试运行器,它应该调用syncdb
并拿起所有已安装的应用程序。django-nose
不负责加载你的灯具(两者都不是正常的Django测试运行器)。夹具由django.test.TestCase
加载。编辑:
你所描述的所有内容都发生在Django的TestCase的_fixture_setup()
中。截断等发生在flush
中,然后设置了固定装置。
https://github.com/django/django/blob/master/django/test/testcases.py#L258
答案 1 :(得分:0)
https://github.com/jbalogh/django-nose/issues/39中显示的差异解决了这个问题。