我在 Django 1.5 和 MySQL 中创建了测试用例。此后,我们的团队将我们的应用程序转移到使用 Django 1.6 和 PostgreSQL 以及 django_hstore 扩展(1.2.2 beta)。
在我尝试迁移我们的测试以使用 DiscoverRunner 测试套件之前,这一直很好。
问题似乎是DjangoTestRunner
会加载中定义的所有应用程序INSTALLED_APPS
,但DiscoverRunner
不再加载它们。
我得到的错误是:
... lib/python2.7/site-packages/django/db/backends/util.py", line 53, in execute
return self.cursor.execute(sql, params)
ProgrammingError: can't adapt type 'HStoreDict'
这是因为这条线src/django_hstore/models.py
没有运行:
connection_handler.attach_handler(register_hstore_handler, vendor="postgresql", unique=True)
解决此问题/确保在我的测试期间加载此应用程序的最佳方法是什么?我目前通过显式导入来解决这个问题django_hstore.models
,这似乎使错误消失,但在我看来可能有更好的方法来解决这个问题。
删除 django_hstore 1.2.4 并不能解决问题。
使用该版本,我会收到类似的错误:
ProgrammingError: can't adapt type 'dict'
除非我破解 import from django_hstore import models as something
。有没有办法让应用程序加载而无需像这样多余的导入?