为ElasticSearch索引创建测试夹具的类似混合器的工具

elasticsearch-fixtures的Python项目详细描述


弹性搜索装置

这个工具的灵感来自klen's Mixer

此工具已优化为与Djangopytest一起使用。

它允许您在yout elasticsearch实例中将文档添加到测试索引中 当你运行单元测试时。

有了elasticsearch_fixtures您可以这样做:

fromelasticsearch_fixtures.es_mixerimportESMixeres_mixer=ESMixer(host='http://localhost:9200/')deftest_something():doc1=es_mixer.blend('indexname',id=1,title='test')assertdoc1['source']['title']=='test'

注意:如果您提供了一个^ {CD4>},一个具有{{CD4}}的文档已经存在,那么 文档不会被更新,但会被完全替换。

您也可以在不提供id的情况下创建文档。ElasticSearch将 自动创建id

deftest_something():doc1=es_mixer.blend('indexname',title='test')print(doc1['id'])

,您可以更新已经在索引中的现有文档:

deftest_something():es_mixer.blend('indexname',id=1,title='test')doc1=es_mixer.update('indexname',id=1,title='new title')assertdoc1['source']['title']=='new_title'

警告:我们不是专家。我们只是开始在附近使用es 2019年6月,我们遇到的第一个问题是,我们不知道如何 为django视图和graphene解析器正确编写unittests 功能。可能有更好的方法来做到这一点。如果你知道,我们 很想听听(打开一个话题告诉我们!).

安装

pip install elasticsearch-fixtures

配置

为了确保您的测试在开始时擦除索引 同样在每次测试之后,创建以下conftest.py

"""Global settings for pytest."""importpytestfromdjango.confimportsettingsfromelasticsearch_fixtures.es_mixerimportESMixeres_mixer=ESMixer(host=settings.ELASTICSEARCH_HOST)index=settings.ELASTICSEARCH_INDEX@pytest.fixture(scope='session',autouse=True)defsetup_elasticsearch():es_mixer.wipe_index(index)@pytest.fixture(autouse=True)defcleanup_elasticsearch():yieldes_mixer.wipe_index(index)

如您所见,在本例中,我们还使用了一个django设置,名为 ELASTICSEARCH_HOST(带有尾随斜杠)和ELASTICSEARCH_INDEX。的 当然,你可以随意命名自己的设置。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
当使用RequestDispatcher时,servlets Java最终没有被调用   java生成对具有可变参数数的方法的调用   java如何使用select子句中的参数化列映射iBATIS的查询?   java无法创建类型为org的插件。阿帕奇。登录中。log4j。果心阿佩德。元素RollingFile的RollingFileAppender   java当子实体和父实体之间存在OneTONE JPA关系时,是否可以将其与父实体一起持久化?   Android上的java Facebook集成fbconnect断开链接   获取方法调用方的java机制   从列表创建Oracle阵列时出现java问题   添加和检索元素的ArrayList的java ArrayList   在java中从字符串中删除无效的XML字符   java如何构建完整生成的maven模块   java如何准确地改变播放所有分辨率midi文件的速度?   shell javac:无效标志:/src/中位_度。ubuntu中的java   java使用从其他类的方法检索到的信息