• Jmeter系列之接口断言


    VOL 136

    19

    2020-06

    今天距2021年195天

    这是ITester软件测试小栈第136次推文

    点击上方蓝字“ITester软件测试小栈“关注我,每周一五早上 07:30准时推送。

    微信公众号后台回复“资源测试工具包”领取测试资源,回复“21天打卡”一起学习成长,打怪升级。

    本文3700字,阅读约需10分钟

    上一篇:Jmeter系列之接口依赖,主要介绍接口依赖的三种处理方式:JSON Extractor、正则表达式、边界提取器(Boundary Extractor)。

    以下主要介绍接口断言的三种方式:Response Assertion(响应断言)、JSON Assertion(JSON断言)、BeanShell Assertion(BeanShell断言)

    在接口自动化中,需要判断接口响应结果是否符合预期,这时我们就要用到断言,类似LoadRunner中设置检查点。

    Response Assertion

    1

    使用场景

    在接口测试过程中,需要对接口响应数据进行规则匹配

    2

     Response Assertion(响应断言)界面说明

    ① HTTP请求,右键,依次选择添加--》断言--》响应断言。

    ② 响应断言界面如下:

    Apply to:

    • Main sample and sub-samples: 范围包括主取样器与所有子取样器。

    • Main sample only : 范围仅限于主取样器。

    • Sub-samples only  :范围仅限于所有子取样器。

    • JMeter Variable Name to use  :范围包括使用的Jmeter变量。

    测试字段:

    响应文本:响应正文(常用)。

    响应代码:响应状态码,比如200、304、404等。

    响应信息:响应消息,比如OK、Not Modified、Not Found等。

    响应头:响应请求头。

    请求头:请求头。

    URL样本:请求的URL

    文档(文本):从各种类型的文档中提取文本。此选项开启也会严重影响性能,谨慎使用。

    忽略状态:忽略响应状态。

    请求数据:请求的body内容。

    模式匹配规则:

    包括:如果文本包含正则表达式模式,则为true。

    匹配:如果整个文本与正则表达式模式匹配,则为true。

    相等: 如果整个文本等于模式字符串(区分大小写),则为true。

    字符串:如果文本包含模式字符串(区分大小写),则为true。

    否:对断言结果进行否定。

    或者:将多个测试模式以逻辑“或”组合起来。

    3

    实战小例子

    ① 创建线程组、HTTP请求、察看结果树。

    ② HTTP请求右键,创建一个响应断言。我们再来看下响应结果的信息:

    {
        "data": {
            "mobile": "12345678",
            "id": 500,
            "rid": 0,
            "email": "adsfad@qq.com",
            "username": "admin",
            "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1OTA5MDY3MzAsImV4cCI6MTU5MDk5MzEzMH0.M3CWrgsDUMvnhkprQMBJ1wWY5OKO-mKiOD4EJ2YV4zc"
        },
        "meta": {
            "msg": "登录成功",
            "status": 200
        }
    }
    

    断言的方式可以多种,比如msg、status或者msg与status一起断言,用其他返回的字段也可以。

    这里我们用msg断言,配置如下:

    ③ 运行后,如断言失败,在察看结果树里http请求会红色显示。

    JSON Assertion

    1

    使用场景

    Json断言适用于接口响应数据为Json格式。

    2

      JSON Assertion(JSON断言)界面说明

    ① HTTP请求,右键依次选择Add--》Assertions--》JSON Assertion。

    ②  JSON Assertion界面如下:

    Assert JSON Path exists:添加json path表达式。

    • Additionally assert value:通过值匹配, 只有勾选了此复选框,才可以在Expected Value中设置期望的值。

    • Match as regular expression:通过匹配正则表达式匹配,只有勾选了此复选框,才可以在Expected Value中设置正则表达式。

    Expect null:期望值为null,如果期望的值为null,可以勾选此项。

    Invert assertion:如果匹配的值存在,则断言失败,不匹配,则断言成功。

    3

    实战小例子

    ① 创建线程组、HTTP请求、察看结果树。

    ② 登录接口响应结果如下:

    {
        "data": {
            "mobile": "12345678",
            "id": 500,
            "rid": 0,
            "email": "adsfad@qq.com",
            "username": "admin",
            "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1OTA5MDY3MzAsImV4cCI6MTU5MDk5MzEzMH0.M3CWrgsDUMvnhkprQMBJ1wWY5OKO-mKiOD4EJ2YV4zc"
        },
        "meta": {
            "msg": "登录成功",
            "status": 200
        }
    }
    
    

    ③ 新建JSON Assertion,用返回结果的msg断言,配置如下:

    ④ 运行后,如断言失败,在察看结果树里http请求会红色显示。

    BeanShell Assertion

    1

    使用场景

    BeanShell断言可以使用beanshell脚本来执行断言检查,可以用于更复杂的个性化需求,使用更灵活,功能更强大,但是要能够熟练使用beanshell脚本。

    2

    BeanShell Assertion(BeanShell 断言)界面说明

    ① HTTP请求,右键依次选择Add--》Assertions--》BeanShell Assertion。

    ② BeanShell Assertion界面如下:

    Reset bsh.Interpreter before each call:若选择此项,则将为每个样本创建对应的解释器。

    Parameters:

    传递到脚本的参数,有如下两种参数传递方式:

    • String Parameters:作为单一的变量参数传递;

    • String[] bash.args:作为数组的字符串数组参数,参数之间通过空格进行分割;

    Script file:包含 BeanShell 脚本的运行文件。将重写当前脚本 Script,其文件名存储在脚本变量名中。

    Script:手动编写BeanShell 脚本。

    3

    实战小例子

    ① 创建线程组、HTTP请求、察看结果树。

    ② 登录接口响应结果如下:

    {
        "data": {
            "mobile": "12345678",
            "id": 500,
            "rid": 0,
            "email": "adsfad@qq.com",
            "username": "admin",
            "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1OTA5MDY3MzAsImV4cCI6MTU5MDk5MzEzMH0.M3CWrgsDUMvnhkprQMBJ1wWY5OKO-mKiOD4EJ2YV4zc"
        },
        "meta": {
            "msg": "登录成功",
            "status": 200
        }
    }
    

    ③ 新建BeanShell Assertion,编写BeanShell脚本,如下:

    运行后,如断言失败,在察看结果树里http请求会红色显示。

    今日问题:

    在接口自动化过程中,你是如何进行接口断言的?

    (欢迎在下方留言区发表你的看法)

    留言福利:

    抽取截止至6月21日留言点赞最多的一位幸运er,可获得:Vue.js权威指南

    (幸运er名单将在下周一推文的置顶留言处公布)

    以上


    That‘s all

    更多系列文章

    敬请期待

    ITester软件测试小栈

    往期内容宠幸

    1.Python接口自动化-接口基础(一)


    2.Python接口自动化-接口基础(二)


    3.Python接口自动化-requests模块之get请求


    4.Python接口自动化-requests模块之post请求


    5.Python接口自动化之cookie、session应用


    6.Python接口自动化之Token详解及应用


    7.Python接口自动化之requests请求封装


    8.Python接口自动化之pymysql数据库操作


    9.Python接口自动化之logging日志


    10.Python接口自动化之logging封装及实战

    想获取更多最新干货内容

    快来星标 置顶 关注

    每周一、三、五 07:30见

    <<  滑动查看下一张图片  >>


     后台 回复"资源"取干货

    回复"21天打卡"一起打怪升级

    测试交流Q群:727998947

    点亮一下在看,你更好看

  • 相关阅读:
    Node爬虫之初体验
    Angular中ui-router实现路由嵌套案例
    Angular路由与多视图综合案例
    面试一周10多家公司面试问题总结 ,react相关的并没多少
    单页面应用和多页面应用
    dangerouslySetInnerHTML 正常解析后台返回的html
    文件上传服务器跨域问题
    回流的触发方式
    antd 树的递归 循环展示部门组织架构
    日常杂项记录:(jquery弹出层插件、js判断是pc还是移动端)
  • 原文地址:https://www.cnblogs.com/ITester520/p/13203278.html
Copyright © 2020-2023  润新知