手把手教你搭建java接口自动化测试框架(四):断言、生成测试报告

手把手教你搭建java接口自动化测试框架(四):断言、生成测试报告

上一集说到post和Get请求,请求后得到的响应(即接口返回值)是我们想要的吗

比如网站上get接口文档说明 :
“data”: [
{
“id”: 7,
“email”: “michael.lawson@reqres.in”,
“first_name”: “Michael”,
“last_name”: “Lawson”,
“avatar”: “https://reqres.in/img/faces/7-image.jpg”
}
我们得到的接口返回值,id=7时first_name是Michael吗,last_name是Lawson吗

这就需要用到断言

在引入断言之前 有的伙计可能会觉得疑惑
接口得到的response 是json格式 我们将其转化成字符串打印出来
怎么进行对比呢
这 就需要用智慧写出一个提取json字符串值的工具类( ̄▽ ̄)

utils包下新建getJsonValueUtil.java

package com.qa.utils;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public class getJsonValueUtil {
    //Json解析
    public static String getValueByJpath(JSONObject responseJson, String jpath) {

        Object obj = responseJson;
        for(String s : jpath.split("/")) {
            if(!s.isEmpty()) {
                if(!(s.contains("[") || s.contains("]"))) {
                    obj = ((JSONObject) obj).get(s);
                }else if(s.contains("[") || s.contains("]")) {
                    obj =((JSONArray)((JSONObject)obj).get(s.split("\\[")[0])).get(Integer.parseInt(s.split("\\[")[1].replaceAll("]", "")));
                }
            }
        }
        return obj.toString();
    }
}

这个获取json value的方法是什么意思呢
我们来看json字符串的的组成
在这里插入图片描述
这个方法主要可以查询两种json值
第一 total=2这种,在json串的第一层,是一个json对象,想要获取total的值,只需要传入其jpath(“total”)就可获取其值,返回结果是12

第二 first_name这种,在data数组中,data属于json数组,不能直接拿值,只能遍历,红线圈出来的是data数组第一个 ,所以查询时jpath是"data[0]/first_name",返回结果是Michael

既然拿到了json里面的值 我们就可以使用断言进行判断啦
修改之前的GetTest01.java 加入断言内容

    @Test
    public void getListUsers() throws IOException {
        restClient = new RestClient();
        response = restClient.getApi(url);
        //获取响应内容
        String responseString = EntityUtils.toString(response.getEntity(),"UTF-8");
        //创建JSON对象  把得到的响应字符串 序列化成json对象
        JSONObject responseJson = JSONObject.parseObject(responseString);
        System.out.println("response json---->" + responseJson);
        //判断得到的结果是否正确
        //首先判断网站是否成功响应  先获取状态码
        int statusCode = response.getStatusLine().getStatusCode();
        //获取到的状态码和200 对比  如果相等就说明网站响应成功
        Assert.assertEquals(statusCode,200,"网页成功响应");
        //然后判断得到的相应内容是否和接口文档一致
        //比如 page=2  per_page=6 total=12是否正确
        //调用utils里面写好的 获取json value的方法
        String get_total = getJsonValueUtil.getValueByJpath(responseJson,"total");
        String get_first_name = getJsonValueUtil.getValueByJpath(responseJson,"data[0]/first_name");
		//断言研判接口返回值是否与预期一致
        Assert.assertEquals(get_total,"12","获取信息总数非12条");
        Assert.assertEquals(get_first_name,"Michael","用户名字不是Michael");
    }

举得两个例子都成功了
想看失败效果的可以自己试一试

那么getListUsers这一个测试用例算是通过了 我们来看控制台
在这里插入图片描述
可以看到运行了1个用例 失败0 跳过0
控制台有一个左下箭头 点击导出报告
在这里插入图片描述
导出后看见报告(奇丑无比)让大家失望了
在这里插入图片描述

肯定有伙计就会问 就这?这就是测试报告?
当然不是(~ ̄▽ ̄)~我们在一开始就引了extentreport包,特地来美化测试报告的,测试报告怎么会如此不美观大方呢
继续往下看

IDEA跟eclipse不一样 需要设置一下才能看见测试报告
点击控制台在这里插入图片描述
Listners–>Use default reporters ---->apply -->ok
再次运行用例 自动生成test-output文件夹 .html文件就是测试报告啦(●’◡’●)
在这里插入图片描述
在这里插入图片描述
惊不惊喜意不意外╮(╯▽╰)╭
虽然不好意思说 肯定还是觉得很吃藕 对不对!
当然这个报告是需要继续美化的 具体操作

请看下集👇

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值