Rest_Assured接口测试-响应体处理

Rest_Assured接口测试-响应体处理:

日常测试中,不同的接口返回的body体不同,有的是返回json格式,有的是返回xml格式,对于断言来说增加了代码量,因此想要统一处理响应体,将此方法封装为一个公共方法,减少冗余代码减少出错率提高效率


将响应体xml格式转换为json

大部分的响应结果都是json格式的,并且json格式的数据看起来更直观,为了方便处理,将xml格式数据转换为json格式再进行断言

下面方法为封装的xml转换为json的方法,先判断响应结果是否为xml,不是的话直接返回原来的响应数据,是xml的话,使用XmlMapper将传入的响应字符串结果读取为JsonNode ,并转换为String

 //xml转换为json
 public void String resToJson(String originRes) throws IOException {
        //如果读取的内容不是xml的,会报错,因此要判断是否是xml
        String res = "";
        if (originRes.startsWith("<?xml")) {
            XmlMapper xmlMapper = new XmlMapper();
            JsonNode node = xmlMapper.readTree(originRes.getBytes());
            ObjectMapper jsonMapper = new ObjectMapper();
            res = jsonMapper.writeValueAsString(node);
        } else {
            res = originRes;
        }
        return res;
    }

使用上面的方法来将响应xml转换为json

    @Test
   // 将返回的xml格式转换为json
    void resToJsonTest() throws IOException {
        String result = given()
                .when()
                .get("https://www.nasa.gov/rss/dyn/lg_image_of_the_day.rss")
                .then().log().all()
                .extract().body().asString();
        // 调用转换成json的方法
        String res = resToJson(result);
        //$..title 是jsonpath定位元素的方式,会查找到所有title,因为有多个title用list接收
        List<String> titleList = JsonPath.read(res, "$..title");
        assertEquals(titleList.get(0), "NASA Image of the Day");
    }

很多时候我们并不知道响应的结果是xml还是json,因此上面封装的方法 既能用于响应体是xml的也能用于json的(如果不是xml的则直接返回了原来的数据)

    @Test
    //返回的数据是json
    void respJson() {
        try {
            String res = given()
                    .when().get("https://httpbin.ceshiren.com/get")
                    .then().log().all()
                    .statusCode(200).extract().body().asString();

            String result = resToJson(res);

           String origin =  JsonPath.read(result,"$.origin");
           assertEquals("172.17.56.110",origin);

        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值