作者:GGG-敏 | 来源:互联网 | 2023-07-03 19:21
您可以编写一些实际上正在调用elasticsearch的基本集成测试,然后用单元测试介绍视图,模型等内部其余的相关方法。这样,您可以测试所有内容,而不必模拟elasticsearch,并发现可能不会出现的错误/行为。
我们正在使用django haystack(https://github.com/django-haystack/django-
haystack),它为搜索后端提供了统一的api,其中包括elasticsearch以及以下管理命令:
- build_solr_schema
- clear_index
- haystack_info
- rebuild_index
- update_index
您可以将以上内容包装在基本集成测试类中,以管理搜索索引。例如:
from django.core.management import call_command
from django.test import TestCase
from model_mommy import mommy
class IntegrationTestCase(TestCase):
def rebuild_index(self):
call_command('rebuild_index', verbosity=0, interactive=False)
class IntegrationTestUsers(IntegrationTestCase):
def test_search_users_in_elasticsearch(self):
user = mommy.make(User, first_name='John', last_name='Smith')
user = mommy.make(User, first_name='Andy', last_name='Smith')
user = mommy.make(User, first_name='Jane', last_name='Smith')
self.rebuild_index()
# Search api and verify results e.g. /api/users/?last_name=smith