zoukankan      html  css  js  c++  java
  • Jmeter_(一)接口响应码断言处理

    在写接口自动化脚本中,常常遇到需要断言接口响应码,根据我目前经验有遇到以下三种情况,在这三种情况下采取不同的断言处理方式:

    (1)接口响应码在response Header中,类似相面红色框中标注出来的Result-Code

    断言处理方式:需要先使用正则表达式提取器将响应码提取出来,然后使用beanshell断言处理

    注意点:第一:检查的响应字段选择信息头;第二:引用名称注意填写,方便后续的beanshell引用;第三:正则表达式,提取出响应码,.+?是指非贪婪,遇到第一个值就停止,[s]代表的是空白字符,放在最后可以理解为截止符号

     

    代码块如下:

    String code = vars.get("code");//获取接口响应码
    log.info("code值为"+code);//将code打印在控制台方便调试
    if (null!=code&&code.equals("0")){   //断言为0取样器结果设置为成功
        SampleResult.setSuccessful(true);
        }

    (2)接口响应码直接是放在http code中(一般是接口返回成功200、其他业务异常码及系统异常码),也就是跟http请求状态码一样的位置,这种情况比较常见,例如下图红色框部分

    处理方式

    • 若断言场景是仅允许一种响应码为真,则只需要使用接口的响应断言进行处理即可:

    注意以下几点:第一:要测试的响应字段要选择Response Headers,原因是断言的响应码在这个范围中;第二:一定要勾选上Ignore Status,原因是需要忽略掉http请求返回的响应状态码;第三:匹配规则选择包括,默认是勾选上substring(与匹配类似,比较精确);

    第四:需要校验的响应码字段填入要测试的模式

    • 若需要处理的断言是可能存在两个及以上的响应码,则需要用到beanshell断言,断言中需要写下列代码:
    String code = prev.getResponseCode();//获取接口响应码
    log.info("code值为"+code);//将code打印在控制台方便调试
    if (null!=code&&code.equals("24900")||code.equals("200")){   //可能存在的断言是24900和200,只要是这两种响应码,取样器最后的结果都设置为成功
        SampleResult.setSuccessful(true);
        }

    (3)还有部分接口响应码是放在响应体中,作为响应报文的字段,这种情况处理起来就非常简单了,直接使用响应断言进行处理即可

    注意点:测试的响应字段范围选择响应文本,匹配规则可以选择默认的substring,但注意下填入断言的内容必须将空格都必须拼接上

    PS:个人经验总结,欢迎兴趣者指正,一起交流讨论

  • 相关阅读:
    Spring 源码学习
    Feign Client 原理和使用
    算法基础:排序算法看这一篇就够了
    Spring 源码学习2
    Spring 源码学习
    最优包裹组合-贪心算法
    @Transactional 事务的底层原理
    Mysql索引扫盲总结
    snowflake原理解析
    分布式ID总结
  • 原文地址:https://www.cnblogs.com/test-muzi/p/8749302.html
Copyright © 2011-2022 走看看