当前位置: 首页 > 面试题库 >

在Django应用中进行单元测试elasticsearch

丁兴德
2023-03-14
问题内容

我有一个使用elasticsearch的Django应用。我想拥有100%的代码测试覆盖率,因此我需要测试对Elasticsearch(本地“安装”)的API调用

所以我的问题是:模拟整个elasticsearch更好还是应该运行elasticserver并检查结果?

IMO最好模拟elasticsearch并仅检查python代码(测试是否使用正确的参数调用了所有内容)。


问题答案:

您可以编写一些实际上正在调用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


 类似资料:
  • 问题内容: 是否有任何简单的机制可以覆盖Django单元测试的设置?我在一个模型上有一个经理,该经理返回特定数量的最新对象。它返回的对象数由NUM_LATEST设置定义。 如果有人更改设置,这可能会使我的测试失败。如何覆盖设置并随后恢复设置?如果不可能,是否可以通过某种方式猴子修补方法或模拟设置? 编辑:这是我的经理代码: 管理器用于切片查询集。该只是用来提供一个默认的应该设置不存在。 问题答案:

  • 问题内容: 在我的django应用程序中,我有一个完成文件上传的视图。核心代码段是这样的 我想对视图进行单元测试。我正计划测试快乐路径和失败路径。即,没有键“ file”的情况,有键“。”的情况。 如何设置幸福道路的发车数据?有人可以告诉我吗? 问题答案: 来自Django文档: 提交文件是一种特殊情况。要发布文件,只需提供文件字段名称作为键,并提供要上传的文件的文件句柄作为值。例如:

  • 使用 GWT 更轻松地测试异步应用程序 您可能从编写 Ajax 应用程序中获得了极大乐趣,但是对它们执行单元测试却着实让人头痛。 在本文中,Andrew Glover 着手解决 Ajax 的弱点(其中之一),即应对异步 Web 应用程序执行单元测试的固有挑战。 幸运的是,他发现在 Google Web Toolkit 的帮助下,解决这个特殊的代码质量问题要比预想的容易。 Ajax 在近期无疑是 W

  • 问题内容: 我选择的数据库是MongoDB。我正在编写一个数据层API,以从客户端应用程序中抽象实现细节- 也就是说,我实质上是在提供一个公共接口(一个充当IDL的对象)。 我正在以TDD方式测试自己的逻辑。在每个单元测试之前,调用一个方法来创建数据库单例,此后,当测试完成时,将调用一个方法来删除数据库。这有助于促进单元测试之间的独立性。 几乎所有单元测试(即 执行上下文查询 )都需要先进行某种插

  • 我想测试以下骆驼路线。我在网上找到的所有例子都有以文件开头的路由,在我的例子中,我有一个Springbean方法,每隔几分钟就会被调用一次,最后消息被转换并移动到jms以及审计目录。 我对这条路线的写测试毫无头绪。目前我在测试用例中所拥有的是

  • 我正在构建一个android应用程序,它使用Firebase作为后端,并采用模型、视图和演示者架构。然而,Firebase是一种云服务的事实使我的android应用程序中的自动测试变得复杂。到目前为止,我已经构建了大部分身份验证系统,但无法看到如何在我的应用程序中实现Firebase代码的单元测试。在端到端测试方面,我也陷入了困境。 由于测试是任何android应用程序的基础,没有it应用程序开发