我正在使用rest assured进行自动化API测试。后端有REST调用,但一切都存储在弹性搜索中。到目前为止,只实现了POST和GET方法,我不能使用DELETE作为方法。我知道有一种方法可以通过chrome扩展来删除弹性搜索库,但我正在寻找一种方法来删除自动化API测试中的弹性搜索库,以便使我的测试独立。例如,在@BeforeTest中用数据加载弹性搜索库,在那之后执行@Test,在@After中我想要删除库并将其返回到默认的空状态,以便在空库中从头开始运行下一个测试。任何帮助都将不胜感激。
发布于 2017-02-26 01:44:11
您可以检查soupmix/elasticsearch client自动化测试用例。我们使用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();与Java示例类似,在我们的php示例中,drop方法直接使用HTTP 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;
}我们使用一个索引,特别是对于所有测试用例,以便能够在测试结束时轻松删除所有数据。
https://stackoverflow.com/questions/42455228
复制相似问题