之前我们的用例数据都是配置在 Jmeter Http 请求中,每次需要增加,修改用例都需要打开 jmeter 重新编辑,当用例越来越多的时候,用例维护起来就越来越麻烦,有没有好的方法来解决这种情况呢?

  其实我们可以将用例的数据存放在 csv 文件中,然后通过 csv 文件配置来读取用例中的数据,执行测试。用例数据如下图所示:

用例设计:

  这里以 httpbin 接口为例,创建用例文件:jmeter-testcase.csv

  用例名称变量含义:

    •   ${caseSeq}:用例编号
    •   ${apiType}:api 类型
    •   ${apiSeq} :api 版本号
    •   ${apiName}:api 名称
    •   ${priority}:优先级
    •   ${url}:api 路径
    •   ${methods}:请求方法
    •   ${parameter}: 请求参数
    •   ${expectValue}:期望值,用于断言

Jmeter 设置步骤:

  1.新建一个线程组,命名为:数据驱动

  2.创建一个 http 请求默认值,设置如下:

  3.添加一个循环控制器 步骤为:线程组——添加——逻辑控制器——循环控制器。 循环控制器的作用可以控制整个用例循环执行的次数。默认值是 1 根据用例数量可以修改为 4

  4.在循环控制器节点下创建 CSV 文件设置,具体配置内容如下:

  5.创建一个 if 控制器,步骤为:线程组——添加——逻辑控制器——if 控制器

  if 控制器的作用为根据不同条件执行不同的用例,例如这里根据不同的接口请求类型,分别创建了 GET 和 POST 两个控制器。

  GET 设置的条件语句如下:

  条件语句为:"${methods}"=="GET"其中 ${methods}表示引用 csv 中的 methods 中的值。

  参数:

    • Interpret Condition as Variable Expression?:如果这个选项被选中,将不会使用 js 解析;条件表达式的值必须是 true(忽略大小写),这里我们取消勾选状态。
    • Evaluate for all children:如果选中这一项,在每个子结点执行前都会计算表达式

  POST 条件语句设置为:"${methods}"=="POST"

  6.创建 GET 请求类型的用例如下

  用例名称格式:${caseSeq}_ ${apiSeq}_${apiName}

  断言设置如下:${expectValue}引用 csv 中对应的值。

  最后添加查看结果树,然后运行可以看到如下运行结果:

  7.POST 用例设置和 GET 类似,不过参数请求不一样,是在 body 中,如果发送的是json格式的参数,需要添加http信息头管理器。另外请求方式为:POST

  运行结果如下:

  

  8.最后在线程组添加一个查看结果树,执行可以查看全部用例执行情况。

小结

  通过这样的数据驱动,当面对大量用例时在 jmeter 设置就非常方便,后续的用例维护也非常高效,因为不用在jmeter 一个个去单独修改用例了。

Jmeter接口测试(七)用例数据分离的更多相关文章

  1. Jmeter接口测试之用例数据分离

    之前我们的用例数据都是配置在 Jmeter Http 请求中,每次需要增加,修改用例都需要打开 jmeter 重新编辑,当用例越来越多的时候,用例维护起来就越来越麻烦,有没有好的方法来解决这种情况呢? ...

  2. Jmeter(七)Jmeter脚本优化(数据与脚本分离)

    午休时间再来记一记,嗯..回顾着使用Jmeter的历程,想着日常都会用到的一些功能.一些组件:敲定了本篇的主题----------是的.脚本优化. 说起脚本优化,为什么要优化?又怎么优化?是个永恒的话 ...

  3. WEB接口测试之Jmeter接口测试自动化 (三)

    接口测试与数据驱动 1简介 数据驱动测试,即是分离测试逻辑与测试数据,通过如excel表格的形式来保存测试数据,用测试脚本读取并执行测试的过程. 2 数据驱动与jmeter接口测试 我们已经简单介绍了 ...

  4. WEB接口测试之Jmeter接口测试自动化 (三)(数据驱动测试) 接口测试与数据驱动

    转载:http://www.cnblogs.com/chengtch/p/6576117.html 1简介 数据驱动测试,即是分离测试逻辑与测试数据,通过如excel表格的形式来保存测试数据,用测试脚 ...

  5. WEB接口测试之Jmeter接口测试自动化 (三)(数据驱动测试)

     接口测试与数据驱动 1简介 数据驱动测试,即是分离测试逻辑与测试数据,通过如excel表格的形式来保存测试数据,用测试脚本读取并执行测试的过程. 2 数据驱动与jmeter接口测试 我们已经简单介绍 ...

  6. Jmeter接口测试与数据驱动

    一. 背景 数据驱动Data Driven Testing(DDT),是一种用于创建自动化测试的方法,或者说是一种架构, 本质是输入数据和用这些数据获取测试结果, 使测试逻辑和测试数据分离. DDT的 ...

  7. JMeter接口测试-循环读取库的用户信息

    前言 如何实现循环读取数据库的用户信息,并传递到下一个登录请求呢,下面我们一起来学习吧!在之前我们已经学会了利用JMeter连接数据库了,具体操作可以看我之前的随笔JMeter接口测试-JDBC测试 ...

  8. 全网最全最细的jmeter接口测试教程以及接口测试流程详解

    一.Jmeter简介 ​ Jmeter是由Apache公司开发的一个纯Java的开源项目,即可以用于做接口测试也可以用于做性能测试. Jmeter具备高移植性,可以实现跨平台运行. Jmeter可以实 ...

  9. http接口测试——Jmeter接口测试实例讲解

    摘要: 最近做的项目需要测试很多接口,上网查一查,发现完整讲述接口测试的资料太少,所以最近自己做完这个项目,把测试的东西整理一下和大家分享一下,希望对看到的人有所帮助     一.测试需求描述 1. ...

  10. jmeter接口测试教程

    一.Jmeter接口测试步骤: 1.添加线程组

随机推荐

  1. SOAR平台初探(一)

    1.前言 Security Orchestration, Automation and Response(SOAR)安全编排和自动化响应,是Gartner2017年提出的新概念.Gartner预计到2 ...

  2. 【转载】uWSGI配置翻译

    英文原版: http://uwsgi-docs.readthedocs.io/en/latest/Options.html 转载地址: http://www.cnblogs.com/zhouej/ar ...

  3. ueditor 百度编辑器 解决表格没有边框

    因为项目需要,发现直接从word和excel复制粘贴以后,居然在禅道上表格没有边框了,故查了一下 这里从word,以及excel粘贴复制,都能直接有边框了,同时在编辑器里面新增表格,也能直接显示边框了 ...

  4. 1070. [SCOI2007]修车【费用流】

    Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同 的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序, ...

  5. HBase学习之路 (十一)HBase的协过滤器

    协处理器—Coprocessor 1. 起源 Hbase 作为列族数据库最经常被人诟病的特性包括:无法轻易建立“二级索引”,难以执 行求和.计数.排序等操作.比如,在旧版本的(<0.92)Hba ...

  6. node.js 连接 sql server 包括低版本的sqlserver 2000

    利用tedious连接,github地址:https://github.com/tediousjs/tedious 废话不多时直接上代码. connection.js var Connection = ...

  7. Python之Web2py框架使用

    本文主要是对Web2py框架的介绍和安装使用. 一. 介绍 全栈式Web框架:Web2py是 Google 在 web.py 基础上二次开发而来的,兼容 Google App Engine .是一个为 ...

  8. 多线程之并发容器ConcurrentHashMap

    这部分内容转载自: http://www.haogongju.net/art/2350374 JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能.因为同步 ...

  9. 将本地项目托管到github 并预览

    本地文件上传到github的步骤 1.先在github上建立一个仓库 2.将此仓库download 3.在此文件夹中git bash here 4.进行如下git操作 git git init git ...

  10. 从CMDB查询云平台组件或者IP简单脚本

    #!/bin/bash#author xiaoweige#todo: ip -- > ingredient or ingredient -- > ip #todo: get the ip ...