0

私は API テストを行っていますが、RestAssuredMatchers ライブラリにネガティブ マッチャーがないことに気付きました。つまり、次のとおりです。

例えば:

コード:

Response response = expect().body("status",equalTo("success")).given()
.contentType("application/json").with()
.body(request).when().post(server); 

ここで私が基本的に言っているのは、この「リクエスト」ボディで、レスポンスのステータス キーが「成功」に等しいことを期待するということです。

ここからステータス コードを抽出して、これが成功した応答フォーム サーバーであることを確認し、肯定的なアサーションを行うことができます。

コード:

    int statusCode = response.getStatusCode(); 
    Assert.assertTrue(statusCode == 200, "status code should have been 200"); 

だからここに私の質問があります:

次のような否定的なアサーションおよび/または期待を行うことができるライブラリまたは何らかの方法はありますか?

コード:

do().not().expect().body("status",equalTo("success")).given()
    .contentType("application/json").with()
    .body(request).when().post(server); 

int statusCode = response.getStatusCode(); 

or RestAssured.assertFalse(statusCode == 404);

等...

誰でも助けてもらえますか?

4

2 に答える 2

0

したがって、RestAssured 投稿へのパラメーターは json データ形式ではなく、文字列に変換された json ペイロードであることがわかりました。したがって、文字列に変換してからcontains...を実行し、それをアサーションにラップすることで、否定的なアサーションを実行できます。コード例を次に示します。

コード:

Response responseLiheap = RestAssured.given().contentType("application/json").with()
.body(requestString).when().post(server);

Assert.assertFalse(responseLiheap.asString().contains("Whatever_it_should_not_contain"));

自分で応答を調べたい場合は、サーバーが送り返すデータをキャプチャして応答を出力できます。

コード:

ResponseBody<?> body = responseLiheap.getBody();  
logger.info("Response:--->" + body.asString()); 

sysout を実行するか、私のように、ロガーを使用して、そのデータから読み取るだけで、自分自身のサニティ チェックを行うことができます。

于 2014-10-22T18:24:18.600 に答える