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,查找加入就可以了


 

posted @ 2020-08-13 16:53  F_Ichigo  阅读(523)  评论(0编辑  收藏  举报