0

我在 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。有没有办法让应用程序加载而无需像这样多余的导入?

4

1 回答 1

0

虽然我回复晚了,但我发布这个是因为它可以帮助某人进一步参考。通过将 django_hstore 升级到 1.4 为我解决了这个问题

于 2015-10-05T13:24:50.553 回答