elasticsearch 删除自动化API测试中的弹性搜索库?,elasticsearch,automation,automated-tests,qa,rest-assured,elasticsearch,Automation,Automated Tests,Qa,Rest Assured" /> elasticsearch 删除自动化API测试中的弹性搜索库?,elasticsearch,automation,automated-tests,qa,rest-assured,elasticsearch,Automation,Automated Tests,Qa,Rest Assured" />

elasticsearch 删除自动化API测试中的弹性搜索库?

elasticsearch 删除自动化API测试中的弹性搜索库?,elasticsearch,automation,automated-tests,qa,rest-assured,elasticsearch,Automation,Automated Tests,Qa,Rest Assured,我正在做自动化的API测试。后端有REST调用,但所有内容都存储在弹性搜索中。到目前为止,只实现了POST和GET方法,我不能使用DELETE作为方法。我知道有一种方法可以通过chrome extension Sense删除弹性搜索库,但我正在寻找一种在自动化API测试中删除弹性搜索库的方法,以便使我的测试独立。例如,在@BeforeTest中,使用数据加载弹性搜索库,然后在@BeforeTest中执行@Test,然后在@after中删除该库并将其返回到默认的空状态,以便在空库中从头开始运行下一

我正在做自动化的API测试。后端有REST调用,但所有内容都存储在弹性搜索中。到目前为止,只实现了POST和GET方法,我不能使用DELETE作为方法。我知道有一种方法可以通过chrome extension Sense删除弹性搜索库,但我正在寻找一种在自动化API测试中删除弹性搜索库的方法,以便使我的测试独立。例如,在@BeforeTest中,使用数据加载弹性搜索库,然后在@BeforeTest中执行@Test,然后在@after中删除该库并将其返回到默认的空状态,以便在空库中从头开始运行下一个测试。任何帮助都将不胜感激。

您可以检查自动测试用例。我们使用php创建一个客户端,在测试设置中,我们创建一个索引,并将数据填充到此索引

protected function setUp()
{
    $config =[
        'db_name' => 'test',
        'hosts'   => ['127.0.0.1:9200'],
    ];
    $client = ClientBuilder::create()->setHosts($config['hosts'])->build();
    $this->client = new ElasticSearch($config, $client);
}
对于Java,您可以在@BeforeTest部件上使用以下代码块:

RestClient restClient = RestClient.builder(
    new HttpHost("localhost", 9200, "http"
).build();
之后,我们运行一些测试用例,如您在github页面上看到的。您可以在java代码中实现这一点。在测试结束时,我们再次删除索引

protected function tearDown()
{
    $this->client->drop('test');
}
对于Java,您需要在@After部分中使用以下代码片段执行以下步骤:

Response deleteIndex = restClient.performRequest(
    "DELETE",
    "/test",
    Collections.<String, String>emptyMap());
restClient.close();

我们特别为所有测试用例使用一个索引,以便能够在测试结束时轻松删除所有数据。

当你说弹性搜索库时,你指的是索引吗?@paqash我指的是clear all elastic search base。是的,我不知道弹性搜索库是什么。Elasticsearch将数据存储在索引中。您可以直接访问Elasticsearch并执行DELETE?我使用JAVA,不用担心,我可以直接访问elastic search,并在Chrone Sense的扩展中使用此命令来删除:DELETE/xxxxxx/xxxxx\u query{“query”:{“match\u all”:{}我的问题是有没有办法在自动化测试中实现这个查询。谢谢。您正在使用delete_by_查询api端点,您可以使用elasticsearch Java Rest客户端轻松构建此查询。如果您愿意,我可以创建一个示例。在您的测试用例中,您需要一个RestClient实例工厂,并使用此客户端轻松执行您的请求。在测试结束时,您还可以使用delete请求删除索引。
public function drop($collection)
{
    $params = ['index' => $this->index];
    try {
        $this->conn->indices()->delete($params);
    } catch (\Exception $e) {
        // This ignore the error
        return false;
    }
    return true;
}