我有两个不同的测试,并且在使用其他测试时都失败了。我要在这里展示其中一个。此测试用于测试同义词是否正常工作。我在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
隔离运行测试时,它运行正常。但是,如果我将其与其他测试一起运行,则会失败,返回1应该返回3的结果。如果我在该点运行原始弹性搜索查询,则elasticsearch返回1个结果。所以它必须是索引设置中的东西...但是我在setup()方法中删除了索引,所以当它运行时,我不知道它是如何处于不同状态的与其他测试一起。
你能给予的任何帮助都会很棒。
答案 0 :(得分:2)
想出来......
Haystack的连接单例需要在测试之间清除,所以:
import haystack
for key, opts in haystack.connections.connections_info.items():
haystack.connections.reload(key)
call_command('clear_index', interactive=False, verbosity=0)