首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除自动化API测试中的弹性搜索库?

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

Stack Overflow用户
提问于 2017-02-25 19:06:46
回答 1查看 341关注 0票数 0

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

EN

回答 1

Stack Overflow用户

发布于 2017-02-26 01:44:11

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

代码语言:javascript
复制
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部件上使用以下代码块:

代码语言:javascript
复制
RestClient restClient = RestClient.builder(
    new HttpHost("localhost", 9200, "http"
).build();

之后,我们运行一些测试用例,就像你在github页面上看到的那样。你可以在你的java代码中做到这一点。在测试结束时,我们再次删除索引。

代码语言:javascript
复制
protected function tearDown()
{
    $this->client->drop('test');
}

对于Java,您需要在您的@After部分中使用以下代码片段来完成此步骤:

代码语言:javascript
复制
Response deleteIndex = restClient.performRequest(
    "DELETE",
    "/test",
    Collections.<String, String>emptyMap());
restClient.close();

与Java示例类似,在我们的php示例中,drop方法直接使用HTTP DELETE方法。

代码语言:javascript
复制
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;
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42455228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档