python – Django haystack测试

python – Django haystack测试,第1张

概述我试图测试我的搜索视图正确地从我的搜索中呈现结果,但是,搜索使用我的实时数据库中的索引而不是我的测试数据库,所以当我为我的测试用例创建一些对象时,它们没有反映在搜索页面. 如何让haystack使用搜索数据库的索引,或者更好的是,只是伪造它而不是使用索引,而是按原样使用数据库.对于那个测试用例来说这很好,可能更快. 谷歌搜索时我似乎只能找到这篇文章:http://reliablybroken.co 我试图测试我的搜索视图正确地从我的搜索中呈现结果,但是,搜索使用我的实时数据库中的索引而不是我的测试数据库,所以当我为我的测试用例创建一些对象时,它们没有反映在搜索页面.

如何让haystack使用搜索数据库的索引,或者更好的是,只是伪造它而不是使用索引,而是按原样使用数据库.对于那个测试用例来说这很好,可能更快.

谷歌搜索时我似乎只能找到这篇文章:http://reliablybroken.com/b/2012/12/testing-django-haystack-whoosh/
它不适用于当前版本.

Pip versions:django==1.7.5django-haystack==2.4.0
解决方法 我在我们的项目中遇到过类似的用例.这是我们实施的粗略概念.请注意,如果您使用simple_backend(SB),您的一些自定义过滤器/准备方法 may not work as expected.因此,即使在测试模式下,建议使用非SB后端(例如d性搜索).

from django.core.urlresolvers import reversefrom django.test import TestCasefrom django.test.utils import overrIDe_settingsfrom haystack import connectionsfrom haystack.utils.loading import ConnectionHandler,UnifIEdindexfrom myapp.models import MyModelfrom myapp.search_indexes import MyModelindexTEST_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)
总结

以上是内存溢出为你收集整理的python – Django haystack测试全部内容,希望文章能够帮你解决python – Django haystack测试所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1197352.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存