请求参数介绍

1 概述

请求体参数规则在【接口调试】、【接口定义】、【接口用例】以及【场景步骤】中均适用。

2 请求头

在【参数名称】处输入或者下拉选择请求头参数,在参数值处输入参数值或 内置函数

!请求头1

批量添加

点击【批量添加】,按如下格式要求输入批量导入文本,点击【应用】完成批量导入。
书写格式

  1. 参数名:参数值,如 name:natural,多条记录以换行分隔。
  2. 批量添加里的参数名重复,默认以最后一条数据为最新数据。

!请求头2

!请求头2

3 请求体

3.1 none

请求没有 Body,不用做填写。

!请求体1

3.2 form-data

输入参数名称、类型、参数值、描述、更多(Content-Type)等信息。

!请求体2

说明

  • 参数名:参数名。
  • 类型:默认 string,可选 integer、number、array、json、file。
  • 参数值:参数值或者 内置函数
  • 长度区间:字符串长度限制,接口定义处使用,这里无需填写。
  • 描述:描述信息。
  • 更多(Content-Type):手动输入或者选择以下 Content-Type 类型。
  • application/json
  • application/text
  • application/ogg
  • application/pdf
  • application/javascript
  • application/octet-stream
  • application/vnd.api+json
  • application/atom+xml
  • application/ecmascript

【批量添加】操作同上 请求头-批量添加

参数类型为 file 时,如下图选择【本地上传】或者【关联文件】。

!请求体3

选择本地上传。

!请求体4

选择关联文件。关联文件即关联【项目管理-文件管理】中的文件。详情参考:文件管理

!请求体5

3.3 x-www-form-urlencoded

输入参数名称、类型、参数值、描述、编码、描述等信息。

!请求体7

说明

  • 参数名:参数名。
  • 类型:默认 string,可选 integer、number、array。
  • 参数值:参数值或者 内置函数
  • 长度区间:字符串长度限制,接口定义处使用,这里无需填写。
  • 编码:用于是否将表单数据转换为 URL 可传输的格式。注意:关闭编码只对 GET 请求生效,POST 默认强制开启编码。

    例如,有以下表单数据:

    1. name : Kaibo Shen
    2. age : 18
    3. 开启编码后,发送到服务器的数据形式如下:name=Kaibo+Shen&age=30
  • 描述:描述信息。

【批量添加】操作同上 请求头-批量添加

3.4 json

在【序号1】处输入 json 文本信息,在【序号2】处格式化 json 文本,在【序号3】处展开 json 子节点。

!请求体8

3.5 xml

在【序号1】处输入 xml 文本信息,在【序号2】处格式化 xml 文本。

!请求体9

3.6 raw

在文本框中输入 raw 格式参数信息。

!请求体10

3.7 binary

请求体为 binary ,如下图选择【本地上传】或者【关联文件】,具体操作同上 上传文件

!请求体11

注意

binary 只能上传或关联一个文件。

4 Query

说明

地址栏中跟在 ? 后面的参数,如 updateapi?id=112。 编码【开启/关闭】规则同上 编码

!请求体12

5 REST

说明

地址栏中被斜杠 / 分隔的参数,如 updateapi/{id}。 编码【开启/关闭】规则同上 编码

!请求体13

6 前置

6.1 脚本操作

【前置脚本】在请求发送前执行,用于生成认证签名或获取 token、修改请求内容、初始化请求需要的参数值等场景。
脚本语言支持:

  1. BeanShell-JSR223(默认,相比 BeanShell 执行速度更快,多在性能测试场景下使用)
  2. BeanShell
  3. Python3
  4. Groovy
  5. JavaScript

示例

  • 执行过程中在控制台打印日志。

    1. //打印 `Hello World!` 到控制台的日志中
    2. log.info("Hello World!");
  • 在前置脚本中获取请求参数。

    1. import org.apache.jmeter.config.Arguments;
    2. //获取请求的body参数
    3. Arguments args = sampler.getArguments();
    4. //将获取到的参数转换成字符串格式
    5. String json = args.getArgument(0).getValue();
    6. //注意:getArgument(0)中的0,一般获取到的请求参数中只有第0个数据。
    7. //在获取返回值时,才会有多个数据列
    8. log.info("{}", json);
    9. //输出值为:{"userId":"123456","userType":"123","type":"1"}
  • 操作变量。

    1. //获取变量 VAR1 的值
    2. vars.get("VAR1");
    3. //设置变量 VAR2 的值为 value
    4. vars.put("VAR2","value");
    5. //移除变量 VAR3
    6. vars.remove("VAR3");
  • 手动录入
    按照【序号1-6】完成【手动录入】脚本并调试。

!手动录入1

  • 引用公共脚本
    选择【引用公共脚本】,点击【引用公共脚本】,在弹出的公共脚本列表页面中选择项目管理中的公共脚本。

注意

引入的公共脚本仅参数值可修改。 通过引入公共脚本方式添加的为引用关系,会跟随原始脚本的变化,当原始脚本更新时,有高亮 new 图标显示。

!引用公共脚本1

!引用公共脚本2

说明

【公共脚本】相关配置请参考: 公共脚本

6.2 SQL 操作

【前置 SQL】在请求发送前执行,用于接口请求前的数据准备工作。

按照【序号】顺序,添加【SQL 操作】并【引入数据源】。

!SQL 操作

!SQL 操作

说明

【数据源】相关配置请参考: 添加数据源

如下图,下拉滚动条,选择【按列存储】或【按结果存储】,从 sql 执行结果集中提取信息。

!SQL 操作

说明

  • 按列存储:指定从数据库结果集中提取的列的名称;多个列可以使用“,”分隔。
  • 按列提取值:输入按列存储中的列名和对应的数值,如提取 name 列的第一个值则输入 name_1
  • 按结果存储:把整个结果集保存为一个变量,而不是将每个列的值保存为单独的变量。

在【SQL 操作】下一步添加一个【脚本操作】的步骤,把上图 sql 执行结果集中提取的信息打印到控制台。

!SQL 操作

6.3 等待时间

按照【序号】顺序,添加【等待时间】并修改等待时间。

!等待时间

6.4 启用全局前置

点击 启用或关闭【全局前置】。
默认开启,关闭则运行该接口时不执行全局前置。

!启用全局前置

说明

【全局前置】相关配置请参考: 全局前置

6.5 代码片段快捷功能

在代码片段右侧可使用快捷操作生成代码片段。

!代码片段快捷功能

说明

  • 从 API 定义导入: 可根据接口定义自动生成该接口请求的代码片段。
  • 新 API 测试(JSON): 自动生成 Httpclient 请求接口的代码片段。
  • 获取变量:获取变量,如:vars.get("variable_name")
  • 设置变量:设置变量,如:vars.put("variable_name", "variable_value")
  • 获取响应头:获取当前请求的响应头,如:prev.getResponseHeaders()
  • 获取响应状态码:获取当前请求的获取响应状态码,如:prev.getResponseCode()
  • 获取响应结果:获取当前请求的响应结果,如:prev.getResponseDataAsString()
  • 设置环境参数:设置当前执行环境的环境参数,如:vars.put(${__metersphere_env_id}+"key","value")
  • 插入公共脚本:插入项目管理中的公共脚本。
  • 终止测试:停止当前测试执行,如:ctx.getEngine().stopTest()

7 后置

7.1 脚本操作

【后置脚本】在请求发送后执行,用于处理响应数据并进行数据转换、验证等操作。
脚本语言支持:

  1. BeanShell-JSR223(默认,相比 BeanShell 执行速度更快,多在性能测试场景下使用)
  2. BeanShell
  3. Python3
  4. Groovy
  5. JavaScript

示例

  • 特殊字符转义。

    1. String rel = "\u7533\u51ef\u6ce2";
    2. try {
    3. String a = URLDecoder.decode(rel,"utf-8");
    4. } catch (UnsupportedEncodingException e) {
    5. // TODO Auto-generated catch block
    6. e.printStackTrace();
    7. }
  • 将文件响应内容存储到服务器。

    1. import java.io.*;
    2. byte[] result = prev.getResponseData();
    3. String file_name = "/opt/metersphere/data/xxxx.xxx";
    4. File file = new File(file_name);
    5. FileOutputStream out = new FileOutputStream(file);
    6. out.write(result);
    7. out.close();
  • 操作变量。

    1. //获取变量 VAR1 的值
    2. vars.get("VAR1");
    3. //设置变量 VAR2 的值为 value
    4. vars.put("VAR2","value");
    5. //移除变量 VAR3
    6. vars.remove("VAR3");

后置脚本操作同 前置脚本操作

!手动录入2

7.2 SQL 操作

【后置 SQL】在请求发送后执行,用于接口请求后的数据验证工作。

后置 SQL 操作同 前置SQL操作

!SQL 操作

7.3 提取参数

  • 正则提取。
    输入【参数名称】,选择【参数类型】,选择【正则】提取方式。

!提取参数

在表达式处输入正则表达式或者点击【快捷提取】图标打开表达式【测试】页面。

!提取参数

在【快捷提取】页面,输入正则表达式,选择【匹配表达式/匹配组】点击【测试】,测试通过后设置【结果匹配规则】后点击【确认】。

!提取参数

在提取参数列表处,点击【…】可快捷设置【匹配规则】。

!提取参数

  • JSONPath 提取。
    输入【参数名称】,选择【参数类型】,选择【JSONPath】提取方式。

!提取参数

在表达式处输入 JSONPath 提取表达式或者点击【快捷提取】图标打开快捷提取页面。

!提取参数

在【快捷提取】页面,点击预期提取的字段快速生成 JSONPath 表达式,测试通过后设置【结果匹配规则】后点击【确认】。

!提取参数

结果匹配规则说明

  • 随机匹配:获取任意一条匹配结果。
  • 指定匹配:需要指定匹配的第N条结果,如果超出指定则返回为空。
  • 全部匹配:返回的是一个匹配结果数组。
    以上匹配规则均基于表达式提取结果集进行再匹配

在提取参数列表处,点击【…】可快捷设置【匹配结果规则】。

!提取参数

  • XPath 提取。
    输入【参数名称】,选择【参数类型】,选择【XPath】提取方式。

!提取参数

在表达式处输入 XPath 提取表达式或者点击【快捷提取】图标打开快捷提取页面。

!提取参数

在【快捷提取】页面,输入 XPath 表达式,测试通过后设置【结果匹配规则】和【响应内容格式】,然后点击【确认】。

!提取参数

在提取参数列表处,点击【…】可快捷设置【匹配结果规则】和【响应内容格式】。

!提取参数

参数类型

  • 环境参数:提取的参数会同步设置到当前执行环境的环境参数里。
  • 临时参数:提取的参数仅当前测试步骤或者场景可用。

!参数类型

7.4 启用全局后置

点击 启用或关闭【全局后置】。
默认开启,关闭则运行该接口时不执行全局后置。

!启用全局后置

说明

【全局后置】相关配置请参考: 全局后置

7.5 代码片段快捷功能

说明

8 断言

8.1 状态码

设置要断言的状态码及其匹配条件。

!状态码

8.2 响应头

下拉选择响应头的参数名称、匹配条件和匹配值。

!响应头

8.3 响应体

选择表达式类型,输入表达式和匹配值,选择匹配条件;具体不同表达式的生成方式同上 提取参数

!响应体

8.4 响应时间

输入要断言的响应时间(单位 ms )。

!响应时间

8.5 变量

输入要断言的变量名、匹配条件和匹配值。

!变量

8.6 脚本

选择【手动录入/引用公共脚本】,输入断言脚本。

!断言脚本

9 认证

选择接口 Auth 认证方式,并输入用户名、密码。

!认证

说明

  • No Auth:非 Auth 认证方式。
  • Basic Auth:一种简单的用户名+密码的认证方式,多以明文发送。
  • Digest Auth:对 Basic Auth 的一种增强,会将用户名和密码加密后发送。

10 设置

设置接口的 【连接超时】、【响应超时】时间,设置【重定向】方式。

!设置

说明

  • 连接超时时间:接口请求和客户端建立连接的超时时间,默认 60s。
  • 响应超时时间:接口请求接收客户端响应的超时时间,默认 60s。
  • 跟随重定向:当响应码是3XX时(如301或302,代表页面发生了重定向),会自动跳转到目标地址,并记录重定向过程中的所有请求的响应结果;系统默认设置为【跟随重定向】。
  • 自动重定向:当响应码是3XX时(如301或302,代表页面发生了重定向),会自动跳转到目标地址,不会记录重定向的过程内容,只返回最终的响应结果,没有中间步骤的记录。