1. 程式人生 > 實用技巧 >Rest Assured從入門到遇到各種問題(彙總、更新)

Rest Assured從入門到遇到各種問題(彙總、更新)

目前還在最初級

用微信企業版模擬傳送應用訊息

maven專案使用Junit5執行單元測試,使用rest assured 傳送post請求,程式碼如下:

 @Test
    void sendMSG(){
        given()
                .queryParam("access_token", token)
                .body("{\n" +
                        "    \"touser\" : \"@all\",\n" +
                        "    \"toparty\" : \"@all\",\n" +
                        "    \"totag\" : \"@all\",\n" +
                        "    \"toall\" : 0,\n" +
                        "    \"msgtype\" : \"text\",\n" +
                        "   \"agentid\" : 1000002,\n" +
                        "   \"text\" : {\n" +
                        "       \"content\" : \"明天就週五啦~繼續元氣滿滿吧~\"\n" +
                        "   },\n" +
                        "   \"safe\":0\n" +
                        "}")
                .when()
                .log().all()
                .post("https://qyapi.weixin.qq.com/cgi-bin/message/send")
                .then()
                .statusCode(200);
    }

備註:接收人不能為空,會報錯,@all讓全部人員收到;

問題1:post請求中,既有請求URL自帶引數,又有json入參的時候,使用param()、body()會報錯;

  解決方法(好像是最基礎的常識問題):使用queryParam() 、body() 就可以了;

問題2:因為傳送的content是中文,雖然訊息正確傳送了,但是手機微信上面收到的資訊卻是“?????~?????~“

  解決方法:在body()後面加上.contentType("application/json"),這樣就會將之前請求的Header中的Content-Type=text/plain; charset=ISO-8859-1,轉成 Content-Type=application/json; charset=UTF-8,就能收到中文訊息了。

問題3:有依賴引數的時候,想使用Junit5的@ParameterizedTest、@MethodSource("getToken") 來引數化,聯想不出來,也查詢不到maven依賴

  解決方法:引數化在Junit5中屬於獨立的一塊,需要另外匯入maven依賴:junit-jupiter-params,查詢加入就可以了