首页 > 其他分享 >MeterSphere 接口测试深度数据驱动使用来喽

MeterSphere 接口测试深度数据驱动使用来喽

时间:2023-01-17 17:32:39浏览次数:74  
标签:__ 文件 读取 接口 dat 测试 MeterSphere txt 函数

    众所周知,MeterSphere 接口自动化中,用户可以添加 CSV 文件可以做数据驱动测试,不熟悉的小伙伴点这里​​【接口自动化做数据驱动(ddt)测试】​​。除了 CSV 文件以外,日常测试过程中,还有 JSON、XML、或者增量与测试相关的文件需要进行读取和写入的操作。用脚本读取/写入文件,需要十行左右,

这次介绍的依然使用JMeter 函数来实现读取/写入文件。大家可以结合自身系统业务,适配测试方案,提升测试效率!

下面是本文要介绍到的函数,对函数使用不熟悉的朋友点这里​​【MeterSphere 中常用 JMeter 函数使用详细】​

函数名称

函数作用

StringFromFile

同时读取多个文件

FileToString

读取整个文件内容

CSVRead

从文件读取指定列的值

XPath

使用 XPath 语法匹配 XML文件

StringToFile

将字符串写入文件

1. StringFromFile:同时读取多个文件

1.1 业务背景

       在一些大数据平台测试过程中,有些测试数据来源是爬虫增量获取到的,每天获取到的数据存为一个文本文件,现有接口需要读取批量文件进行测试,此时我们需要将多个文件中每一行值加载为接口请求参数。这时需要用到StringFromFile 函数,使用场景变量添加csv,也能达到相同的目的,而且方法更简单,但是它目前不支持多个输入文件。

1.2 函数说明

该函数用于从文本文件中读取字符串,每次读取一行,支持读取多个文件。

每次调用函数,都会从文件中读取下一行。当到达文件末尾时,函数又会从文件开始处重新读取,直到最大循环次数。

如果在一个测试脚本中对该函数有多次引用,那么每一次引用都会独立打开文件,即使文件名是相同的(如果函数读取的值,在脚本其他地方也有使用,那么就需要为每一次函数调用指定不同的变量名)。

如果在打开或者读取文件时发生错误,那么函数就会返回字符串"ERR"。

1.3 参数说明

参数

描述

是否必填

文件名

文件名的路径 (路径可以相对于 JMeter 启动目录)。

yes

变量名

用于后续调用该函数的变量名称

no

启动序号

初始序列号(如果省略,则将结束序列号视为循环计数)

no

末端序号

最终序列号(如果省略,序列号可以无限制地增加)

no

  • 启动序号:初始的序列号,如果省略,那么结束序列号就代表文件的循环读取次数。
  • 末端序号:结束序列号,如果省略,那么序列号会无限增长。

1.4 使用示例

读取单个文件:${_StringFromFile(demo.txt,,,)} 读取demo.txt读取多个文件,需要在文件名中使用序列号:${_StringFromFile(PIN.DAT,,,2)} 读取 PIN.DAT 两次${_StringFromFile(PIN#'.'DAT,,1,3)} 读取 PIN1.DAT PIN2.DAT PIN3.DAT${_StringFromFile(pin000'.'dat,,6,8)} 读取 pin006.dat pin007.dat pin008.dat

MS 所在服务器data目录下有aa.txt文件

MeterSphere 接口测试深度数据驱动使用来喽_数据驱动

StringFromFile函数读取单个文件:

aa.txt文件内容为测试账户名:gl1,gl2,gl3

使用 ${__StringFromFile(/opt/metersphere/data/json/aa.txt,,,)} 引用

因为每次执行读取一行,所以搭配循环控制器使用,如下图,设置循环次数7,文件有3行,第七次循环取的是文件第一行gl1

MeterSphere 接口测试深度数据驱动使用来喽_接口测试_02

${__StringFromFile(/opt/metersphere/data/json/aa.txt,,,2)} 引用,因设置了末端序号为2,只读取文件两次,循环次数为7,此时第七次循环因请求体取值有问题报错

MeterSphere 接口测试深度数据驱动使用来喽_数据驱动_03

StringFromFile 函数读取多个文件:

aa1.txt 中有测试数据 admin1 admin2 admin3 aa2.txt中有测试数据 ycr1 ycr2 ycr3

使用 ${__StringFromFile(/opt/metersphere/data/json/aa#.txt,,1,2)} 引用

前六次循环 name 依次取值为 admin1 admin2 admin3 ycr1 ycr2 ycr3

此时第七次循环因请求体取值有问题报错

MeterSphere 接口测试深度数据驱动使用来喽_接口测试_04

使用序列号时,路径名被用作 java.text.DecimalFormat 的格式字符串。当前序列号作为唯一参数传入。如果未指定开始序列号,则按原样使用路径名称。

1.5 格式化系列使用示例

常用的两个格式化序列:

  • #:插入数字,没有前导零或空格。
  • 000:插入数字,数字不足三位时,将插入前导零补足三位;数字超过三位时,则插入数字实际位数。

用法说明:

在不带前导零的情况下插入数字:pin#'.'dat:可以匹配 pin1.dat, ... pin9.dat, pin10.dat, ... pin9999.dat带前导零的情况下插入数字:pin000'.'dat:可以匹配 pin001.dat ... pin099.dat ... pin999.dat ... pin9999.dat在不带前导零的情况下追加数字:pin'.'dat#:可以匹配 pin.dat1, ... pin.dat9 ... pin.dat999

注意:上面的 . 是格式化字符,必须用单引号括起来。

2. FileToString :读取整个文件内容

2.1 业务背景

在 ToB 系统的业务场景中,经常有厂家需要将原始 JSON 文件数据,用于请求体传参,或者响应体对比等业务场景

2.2 函数说明

把文件读取成一个字符串,每次调用都是读取整个文件。读取文件保存至变量中。

如果出现打开或读取文件的错误,则函数将返回字符串 **ERR**。

2.3 参数说明

字段

描述

是否必传

文件名

需要读取的文件名

yes

文件编码

读取文件的字符集

不传则用系统默认字符集


no

变量名

用于后续调用该函数的变量名称

no

2.4 使用案例

${__FileToString(/opt/metersphere/data/json/15.json,,)}

MeterSphere 接口测试深度数据驱动使用来喽_接口测试_05

${__FileToString(/opt/metersphere/data/json/test.csv,utf-8,)}

MeterSphere 接口测试深度数据驱动使用来喽_接口测试_06

3. CSVRead :从文件读取指定列的值

3.1 业务背景

使用场景变量添加CSV,可以实现读取CSV内容,而且方法更简单,但是它必须搭配循环控制器才能读取到内容,有些测试业务场景也不需要获取到全部内容,只需要获取到指定列的值。可以用 CSVRead 函数读取,是否需要结合循环控制器,适配业务即可。

3.2 函数说明

  • 从一个 CSV 文件中返回一个字符串。
  • 当第一次调用该函数时,文件将被打开并读取到一个内部数组中。如果检测到空行,这将被视为文件的末尾。
  • 所有对同一文件名的后续引用都使用相同的内部数组,文件名区分大小写。
  • 每个线程都有自己的指向文件数组中当前行的内部指针。当线程首先引用文件时,它将在数组中分配下一个空闲行,因此每个线程将访问与所有其他线程不同的行(除非数组中的线程多于行)。

3.3 参数说明

字段

描述

是否必传

文件名

要读取的文件名

列号

文件中的列号。0–第一列,1–第二列,next–文件的下一行。

3.4 使用示例

读取文件中的第1行第1列: ${__CSVRead(random.txt,0)}读取文件中的第1行第2列,并进入文件下一行:${__CSVRead(random.txt,1)}${__CSVRead(random.txt,next)}读取文件第2行第1列: ${__CSVRead(random.txt,0)}读取文件中的第2行第2列,并进入文件下一行: ${__CSVRead(random.txt,1)}${__CSVRead(random.txt,next)}

示例描述:接口的请求参数值为 CSV中的第二列。

测试分析:每次获取当前行的第二列,并跳转到下一行,这里的示例搭配循环控制器使用,csv一共4行,第五次循环的时候,获取到的下一行数据的第二列为文件的第一行了

MeterSphere 接口测试深度数据驱动使用来喽_接口测试_07

4. XPath:使用 XPath 语法匹配 XML文件

4.1 参数说明

字段

描述

是否必传

XML file to get values from

待解析的xml文件 ,绝对路径

yes

XPath expression to match against

xpath表达式匹配xml节点


yes

4.2 使用案例

示例1:

${__XPath(/opt/metersphere/data/json/test.xml,//name)}

MeterSphere 接口测试深度数据驱动使用来喽_接口测试_08

MeterSphere 接口测试深度数据驱动使用来喽_数据驱动_09

示例2:

示例xpath表达式://target[2]/@name

MeterSphere 接口测试深度数据驱动使用来喽_数据驱动_10

5. StringToFile:将字符串写入文件

5.1 函数说明

  • 在脚本中用 FileOutputStream 也可实现将字符串追加/覆盖到文件中,用函数更简便写。
  • StringToFile函数每次调用它时,它都会将一个字符串附加或覆盖到文件中。
  • 函数的默认返回值是空字符串。

5.2 参数说明

字段

描述

是否必传

Path to file (absolute)

文件名的路径。(路径是绝对的)

yes

String to write

要写入的内容

如果需要在内容中插入换行符,请在字符串中使用\n


yes

Append to file (true appends, false overwrites, default true)

字符串的写入方式,true表示追加,false表示覆盖。如果未指定,则默认的append为true。

no

File encoding if not UTF-8

用于写入文件的编码。如果未指定,默认编码为UTF-8。

no

5.3 使用案例

String kong = "${__StringToFile(/opt/metersphere/data/json/aa.txt,${name},false,)}";

如下图在脚本中将变量值覆盖到文件中

MeterSphere 接口测试深度数据驱动使用来喽_接口测试_11

此时文件被覆盖为新值

MeterSphere 接口测试深度数据驱动使用来喽_接口测试_12

这篇文章到这里就结束啦,大家对内容有不同的想法或者关于 MS 不解的问题都可以告诉我 ,评论区见!

标签:__,文件,读取,接口,dat,测试,MeterSphere,txt,函数
From: https://blog.51cto.com/u_15922911/6017529

相关文章

  • Nginx配置转发代理接口
    cd/etc/nginx/conf.d/vimtest.confupstreammy_server{server192.168.100.100:11105;keepalive2000;......
  • 揭开华为云CodeArts TestPlan启发式测试设计神秘面纱!
    摘要:质量是产品的生死线。本文分享自华为云社区《​​揭开华为云CodeArtsTestPlan启发式测试设计神秘面纱!​​》,作者:华为云PaaS服务小智。2019年12月20日,是美国波音公司新......
  • 揭开华为云CodeArts TestPlan启发式测试设计神秘面纱!
    摘要:质量是产品的生死线。本文分享自华为云社区《揭开华为云CodeArtsTestPlan启发式测试设计神秘面纱!》,作者:华为云PaaS服务小智。2019年12月20日,是美国波音公司新一代......
  • 优测着力打造全方位测试服务平台
    优测云服务平台是腾讯官方推出的一站式移动云测试服务平台,拥有十年终端测试服务经验,提供兼容性测试、自动化测试、云真机、设备分享等多种服务方式。团队拥有50余名测试领域......
  • 批量采集淘宝整店商品数据上传至京东店铺接口代码展示
    背景item_search_shop-获得店铺的所有商品接口,可以利用店铺ID或者是卖家ID或者是店铺主链接进行请求接口请求商品所有商品接口,拿到整店商品详情页面的商品ID,商品标题,商品......
  • 软件验收测试有什么注意事项?出具权威测试报告的软件检测机构安利
    软件产品在开发到发布有一个最终环节便是验收测试,软件验收测试是软件产品在部署之前的最后一个测试操作,主要是为了确保软件各方面准备就绪,可以让最终的用户将其用于执行......
  • Jmeter如何使用jp@gc - WebDriver Sampler做功能GUI自动化测试
    随着Jmeter的版本不断迭代更新,尤其是其插件。Jmeter不仅可以完成性能测试、接口测试,而且可以依靠jp@gc-WebDriverSampler来完成GUI的功能自动化测试了。1.jmeter的安装......
  • Sonic--开源云真机测试平台
    读者提问:开源云真机测试平台有推荐的吗 ?阿常回答:有,Sonic。官网地址:​​https://sonic-cloud.gitee.io/#/Home​​Github地址:​​https://github.com/SonicCloudOrg​​部署......
  • 测试漏测,谁来背锅
    读者提问: 『项目交付上线后发生测试漏测事故,谁来背锅 ?』 阿常回答: 首先,这不是一个好问题。(缺失问题背景、你的思考、你真正想问的内容) 再来回答问题: 测试漏测应该由整......
  • 文件上传测试:Windows 创建指定大小的文件
    读者提问: 『我们测试文件上传时需要上传指定大小的文件,Windows如何创建指定大小的文件,有比较便捷的操作方法吗 ?』 阿常回答:fsutil.exe 创建指定大小文件指定内容生成指......