接口自动化-rest-assured做接口自动化测试如何获取response响应内容

利用rest-assured做接口自动化测试,在执行用例时,有时候我们需要上一步请求的返回值作为参数,例如登录token,生成的用户id等;

  • 登录rest-assured的官方GitHub地址(https://github.com/rest-assured/rest-assured/wiki/Usage)查看文档发现

接口自动化-rest-assured做接口自动化测试如何获取response响应内容_第1张图片

实例演示

  • 现有如下关于患者信息的接口返回,

       Request method:	POST
          Request URI:	http://XXX/brain/rest/patient/insert
          Proxy:			
          Request params:	
          Query params:	
          Form params:	
          Path params:	
          Headers:		Token=Bearer C891hs2oaDrFZTr+E8YdqAOGkfMiRD7GdyZJKEFHPA4QNkyj6JVAsoFdqXq2FvhgOhALlDZRvcXF+1QNbG3VmA==
          				Host=XXX.com
          				Accept=*/*
          				Content-Type=application/json; charset=UTF-8
          Cookies:		
          Multiparts:		
          Body:
          {
              "medicalHistoryType": [
                      "medicalHistoryName": "是否有老年痴呆家族史",
                      "medicalHistoryIdentify": 2,
                      "medicalHistoryDegree": 0,
                      "medicalHistoryDescribe": null,
                      "createTime": ""     
              ],
              "patient": {
                  "address": "上海市浦东新区张江镇XX路XXX号",
                  "education": "本科",
                  "educationTime": 6,
                  "jobType": "公务员",
                  "marrige": "已婚",
                  "mobilephone": "1392602****",
                  "patientAge": 0,
                  "patientBirthdate": "1965-05-04",
                  "patientName": "API测试患者qMnxUulJ",
                  "patientSex": 0
              }
          }
    
从官方给的文档中我们清楚的发现,如果只是单独的获取ResponseBody中的单一值的话可以使用"请求.path(“检索路径”)"

接口自动化-rest-assured做接口自动化测试如何获取response响应内容_第2张图片

  • 现在假如我们需要通过创建患者的id来进行患者删除的操作,就可以直接通过.path的方式来获取:
Integer uid = patientManager.createPatient(patientName,mobilephone).path("body.patient.uid");
patientManager.deletePatient(uid).then().statusCode(200) .body("status",equalTo("1"));
如果想获取ResponseBody中的多个值,可以先将响应结果以json字符串的形式保存下来,再一一根据需要获取

接口自动化-rest-assured做接口自动化测试如何获取response响应内容_第3张图片

  • 现假如我们需要获取uid和patientName两个值来进行参数传递:
String json = patientManager.createPatient(patientName,mobilephone).asString();
Integer uid = from(json).get("body.patient.uid");
patientName = from(json).get("body.patient.patientName");
如果想要获取Headers, cookies, status等值,可以利用Response.get的方法来获取

接口自动化-rest-assured做接口自动化测试如何获取response响应内容_第4张图片

  • 现假如我们要获取Header中的token信息,就可以使用Response.get的方法来获取:
public static String getBPFAppToken(){
        String url = setLoginEnv();
        String body = loginBody;
        return RestAssured.given().log().all()
                .body(body)
                .when().post(url)
                .then().log().all().statusCode(200)
                .extract().response().getHeader("Token");
    }

你可能感兴趣的:(接口自动化-rest-assured做接口自动化测试如何获取response响应内容)