Rest Assured從入門到遇到各種問題(彙總、更新)
阿新 • • 發佈:2020-08-13
目前還在最初級
用微信企業版模擬傳送應用訊息
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,查詢加入就可以了