2017-02-25 12 views
0

私は安心して自動化されたAPIテストを行っています。バックエンドにはREST呼び出しがありますが、すべてが弾性検索に格納されています。これまではPOSTメソッドとGETメソッドしか実装されておらず、メソッドとしてDELETEを使用することはできません。 Chrome拡張機能Senseを使用してエラスティック検索ベースを削除する方法があることはわかっていますが、自動APIテスト内でエラスティック検索ベースを削除してテストを独立させる方法を探しています。例えば、@BeforeTestでは、弾性検索ベースにデータをロードし、その後に@Testを実行し、@Afterでベースを削除してそれをデフォルトの空の状態に戻して空にして最初からテストを実行しますベース。どんな助けもありがとう。自動APIテストでエラスティック検索ベースを削除しますか?

+0

あなたが弾力的な検索ベースと言えば、インデックスを意味しますか? – paqash

+0

@paqash私はすべての弾力的な検索ベースを明確にしています。 – Gudzo

+0

ええ、私は弾力性のある検索ベースが何であるか分かりません。 Elasticsearchはインデックスにデータを格納します。 – paqash

答えて

0

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部分に次のコードブロックを使用することができます:あなたはgithubのページで見ることができるようにその後

RestClient restClient = RestClient.builder(
    new HttpHost("localhost", 9200, "http" 
).build(); 

を、我々はいくつかのテストケースを実行します。これはあなたのJavaコードで行うことができます。テストが終了したら、インデックスをもう一度削除します。

protected function tearDown() 
{ 
    $this->client->drop('test'); 
} 

は、Javaの場合は、あなたがあなたの@After部にコードスニペットの下で、この手順を実行する必要があります、

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

同様にJavaの例を方法を落とし、DELETE HTTPを直接使用して、私たちのPHPの例であります方法。

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

私は安心するとJAVAを使用して、私が直接弾性検索にアクセスすることができ、私は削除するChroneセンスの拡張で、このコマンドを使用しています:DELETE/XXXXXX/xxxxx_query { 「クエリ」:{ 「match_all」:{} } }私の質問は、自動テストでこのクエリを実装する方法があるかどうかです。ありがとう – Gudzo

+0

はい。あなたはdelete_by_query APIエンドポイントを使用しており、elasticsearch Java Rest Clientで簡単にこのクエリを構築できます。https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/_example_requests.html#_example_requests作成できますテストケースでは、RestClientインスタンスをファクトリにして、このクライアントで簡単にリクエストを実行する必要があります。テストが終了したら、削除要求でインデックスを削除することもできます。 – hkulekci

+0

私はphp onesに関連するいくつかのjava exampleコマンドを追加しました。 – hkulekci

関連する問題