python – Django haystack测试
发布时间:2020-12-20 13:51:46 所属栏目:Python 来源:网络整理
导读:我试图测试我的搜索视图正确地从我的搜索中呈现结果,但是,搜索使用我的实时数据库中的索引而不是我的测试数据库,所以当我为我的测试用例创建一些对象时,它们没有反映在搜索页面. 如何让haystack使用搜索数据库的索引,或者更好的是,只是伪造它而不是使用索引,
我试图测试我的搜索视图正确地从我的搜索中呈现结果,但是,搜索使用我的实时数据库中的索引而不是我的测试数据库,所以当我为我的测试用例创建一些对象时,它们没有反映在搜索页面.
如何让haystack使用搜索数据库的索引,或者更好的是,只是伪造它而不是使用索引,而是按原样使用数据库.对于那个测试用例来说这很好,可能更快. 谷歌搜索时我似乎只能找到这篇文章:http://reliablybroken.com/b/2012/12/testing-django-haystack-whoosh/ Pip versions: django==1.7.5 django-haystack==2.4.0 解决方法
我在我们的项目中遇到过类似的用例.这是我们实施的粗略概念.请注意,如果您使用simple_backend(SB),您的一些自定义过滤器/准备方法
may not work as expected.因此,即使在测试模式下,建议使用非SB后端(例如弹性搜索).
from django.core.urlresolvers import reverse from django.test import TestCase from django.test.utils import override_settings from haystack import connections from haystack.utils.loading import ConnectionHandler,UnifiedIndex from myapp.models import MyModel from myapp.search_indexes import MyModelIndex TEST_INDEX = { 'default': { 'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine','URL': 'http://127.0.0.1:9200/','INDEX_NAME': 'test_index',},} @override_settings(HAYSTACK_CONNECTIONS=TEST_INDEX ) class SearchViewTest(TestCase): def setUp(self): """ Some ideas taken from here: https://github.com/django-haystack/django-haystack/blob/v2.6.0/test_haystack/test_views.py#L40 """ connections = ConnectionHandler(TEST_INDEX ) super(SearchViewTest,self).setUp() self.mm = MyModel.objects.create(name='Dummy Title') # Stow. self.old_unified_index = connections['default']._index self.ui = UnifiedIndex() self.mmi = MyModelIndex() self.ui.build(indexes=[self.mmi]) connections['default']._index = self.ui # Update the 'index'. backend = connections['default'].get_backend() backend.clear() backend.update(self.mmi,MyModel.objects.all()) def tearDown(self): connections['default']._index = self.old_unified_index super(SearchViewTest,self).tearDown() def test_search_results(self): response = self.client.get('/search?q=dummy') self.assertIn(self.mm.name,response) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |