定义:

  • Tests用于发送请求之后执行的代码,一般用于断言(断言接口的返回值是否正确)
  • 就是比对测试结果是否正确,将预期结果和实际响应内容做比较

image.png

断言方法

菜单操作/模板

image.png

代码编写

image.png

  • 响应内容:
    • 响应状态码:responseCode.code
    • 响应正文:responseBody
  • 响应处理

    • text/html
      • 有很多处理方式,对字符串处理函数,比如split函数
      • 字符串.split(“分隔符”) 表示对字符串按照分割符拆成多个字符串
    • Json
      • 响应文本本身是字符串类型,即便是响应类型是Json类型,但是结果是字符串类型
      • 必须将字符串类型转成Json类型
        1. JSON.parse(responseBody) # 把响应正文字符串类型转换为json类型
        提取json中部分参数
        1. # JSON Path表达式
        2. {
        3. {"a":"张三",
        4. "b":{
        5. "c":24
        6. }
        7. }
        8. }
        9. # 查看a的值
        10. JSON.parse(responseBody).a
        11. JSON.parse(responseBody).['a']
        12. # 查看c的值
        13. JSON.parse(responseBody).b.c
        14. JSON.parse(responseBody).['b']['c']

        has断言

  • 用于判断数据是否存在,主要用于字符串数据的判断

  • 常用与世界结果中包含大量文字时使用
  • 断言书写方法

    1. tests["断言消息"]=responseBody.has("预期结果")
    2. # tests 属于关键字,固定写法
    3. # has 包含
    4. # 如果实际结果中包含预期结果,则测试结果为pass通过,否则结果为fail失败
    1. actual=responseBody //实际结果
    2. expect='注册时间' //预期结果
    3. case_id='ui-login01' // 测试编号
    4. case_name='判断实际结果中包含:接口测试' //用例信息
    5. case_info = case_id +'==' +case_name // 用例信息
    6. tests[case_info]=actual.has(expect)

    image.png

    等值断言

  • 常用与少量字符串的精确匹配

  • 更多用于json类型数据的精确匹配
  • json使用时,可以做部分匹配,也可以做完整匹配
  • 内容是json字符串的响应结果本身不方便使用== 应为想用文本此时类型是字符串
  • 字符串使用==比较结果时比较严格,差一个标点符号或一个空格都会导致断言失败
  • 通常需要把内容json字符串的响应结果转为json对象,但是postman不支持json对象比较
  • 最终策略是,先把响应结果字符串转为json对象,再把json对象转为格式化后的字符串
  • json.parse(响应文本)字符串转为json对象,再把json对象转为格式化后的字符串

    • json.parse(响应文本)字符互串转为json对象
    • Json.stringfy(Json对象)Json对象转为格式化字符串
      1. string_actual=responseBody
      2. console.log(typeof(string_actual)) //sting字符串类型
      3. //console.log() 将括号中内容显示在控制台中,类似于python print() 函数
      4. // typeof() 查询括号中对象/变量的类型
      5. json_actual=JSON.parse(string_actual) // 将字符串类型实际结果转为json类型
      6. actual_mh_string=JSON.stringify(json_actual) //转为格式化后的字符串
      7. json_expect= {"Status":1000,'Result':"Usercheck ok",'Message':'登录验证成功'}
      8. expect_mh_string=JSON.stringify(json_expect)
      9. tests['login_01:登录验证成功']=expect_mh_string==actual_mh_string
      image.png

      json部分断言

      json对象[‘健名’]==预期值
      1. string_actual=responseBody
      2. Status_actual=JSON.parse(string_actual).Status
      3. Result_actual=JSON.parse(string_actual).Result
      4. Message_actual=JSON.parse(string_actual).Message
      5. json_expect={
      6. "Status": 1000,
      7. "Result": "Usercheck ok",
      8. "Message": "登录验证成功"
      9. }
      10. Status_expect=json_expect.Status
      11. Result_expect=json_expect.Result
      12. Message_expect=json_expect.Message
      13. tests['longin_验证:Status']=Status_actual==Status_expect &&Result_actual==Result_expect && Message_actual==Message_expect
      14. # 多个条件使用&&连接 表示与关系
      15. # 多个条件使用||连接 表示或关系
      image.png

      区别

  • has和==区别

    • has断言是一种模糊匹配,部分数据正确节课,has一般用于text/html也可以用于json类型
    • ==断言是一种精确匹配,数据必须完全一致,一般用于json断言
  • 为什么要将json格式字符串进行类型转换
    • 为了防止预期结果和实际结果中包含有多余的空格
    • 在postman中不支持json对象的比对,所以需要转换成字符串
    • 最终两个格式化后的字符串做比较
    • json.stringify()中只能放json对象