gpt4 book ai didi

django - Haystack with Elasticsearch:单独运行时,单元测试会得到不同的结果

转载 作者:行者123 更新时间:2023-12-02 22:25:37 25 4
gpt4 key购买 nike

我有两个不同的测试,并且在与其他测试一起运行时都失败了。我将在这里显示其中之一。此测试用于测试同义词是否有效。我的synonym.txt文件中有以下同义词:

knife, machete
bayonet, dagger, sword

单元测试如下所示:
def test_synonyms(self):
"""
Test that synonyms are working
"""
user = UserFactory()
SubscriberFactory.create(user=user)
descriptions = [
'bayonet',
'dagger',
'sword',
'knife',
'machete'
]
for desc in descriptions:
ListingFactory.create(user=user,
description="Great {0} for all of your undertakings".format(desc))

call_command('update_index', settings.LISTING_INDEX, using=[settings.LISTING_INDEX])

self.sqs = SearchQuerySet().using(settings.LISTING_INDEX)

self.assertEqual(self.sqs.count(), 5)
# 3 of the 5 are in one group, 2 in the other
self.assertEqual(self.sqs.auto_query('bayonet').count(), 3)
self.assertEqual(self.sqs.auto_query('dagger').count(), 3)
self.assertEqual(self.sqs.auto_query('sword').count(), 3)
# 2 of the 5 in this group
self.assertEqual(self.sqs.auto_query('knife').count(), 2)
self.assertEqual(self.sqs.auto_query('machete').count(), 2)

问题是,当我使用 ./manage.py test AnalyzersTestCase.test_synonyms命令单独运行测试时,它运行良好。但是,如果我将其与其他测试一起运行,则会失败,并在应返回3的位置返回1个结果。如果此时运行原始的Elasticsearch查询,elasticsearch将返回1个结果。所以它一定是索引设置中的东西...但是我要删除setup()方法中的索引,所以我看不到它独立于运行时如何处于不同的状态以及其他测试。

您能提供的任何帮助都会很棒。

最佳答案

弄清楚了...

测试之间需要清除Haystack的连接单例,因此:

import haystack
for key, opts in haystack.connections.connections_info.items():
haystack.connections.reload(key)
call_command('clear_index', interactive=False, verbosity=0)

关于django - Haystack with Elasticsearch:单独运行时,单元测试会得到不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23569583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com