使用参数文件

最近更新时间:2024-12-31 16:08:53

我的收藏

上传参数文件

通过上传 csv 参数文件,您可以动态引用其中的测试数据,供脚本里的变量使用。 这样,当施压机并发执行这段代码,每条请求能动态、逐行获取 csv 里的每行数据,作为请求参数使用。

参数定义

默认 csv 首行作为参数名。在该模式下,PTS 读取数据时,会跳过第一行。
若不用 csv 文件首行做参数名,则可如下图所示,取消勾选首行作为参数名,然后勾选该参数文件所在的行,页面会展开一个参数名编辑框,供您自行编辑参数名。




参数使用

在代码中,您可以用参数名作为变量名,获取变量值。
每个 VU 每次迭代会按照顺序取 csv 的一行数据。
当 csv 文件被读取完最后一行数据后,下次会回到首行,继续循环读取。

参数文件组合与切分

参数切分的逻辑

同施压机多 VU:所有 VU 共同逐行读取施压机上的 csv 文件,每个 VU 每次迭代会依次取一行数据。例如:施压机有一个参数文件 user.csv,在压测启动后,VU-1的第1次迭代读取到了第1行,VU-2的第1次迭代则读取到第2行,以此类推。
多施压机:若参数文件很大,用户可勾选切分文件。PTS 会将大文件逐行切分,按照流量占比分配给多个施压机使用。例如:user.csv 有4行数据,用户勾选了切分文件,且在广州地域有2个压测资源(施压机),则在压测启动前,施压机-1获取到包含第1、3行数据的 csv,施压机-2获取到包含第2、4行数据的 csv。

参数组合的逻辑

一个场景可上传多个 csv 参数文件,进行跨文件参数组合。
不同 csv 文件的列名(参数名)需保持全局唯一。
每个 VU 每次迭代会跨文件取到多个文件的同一行的数据。
若不同 csv 文件的行数不同,默认采用行数大的作为基准,行数少的 csv 文件会自行复制到跟基准文件相同行数,保证每个 VU 每次迭代都能取到多个文件的同一行的数据。

在场景中使用参数

简单模式场景

在简单模式的场景中,您可以用 ${} 的形式,使用参数文件里的参数。以下面的 dataset.csv 为例:
MyKey,MyValue
key1,value1
key2,value2
上传完成后,即可如下图所示:




脚本模式场景

代码示例如下,用 dataset.get("MyKey"),可从 csv 文件获取参数名/列名为 MyKey 的参数值,作为请求体里的 value 值。
import dataset from 'pts/dataset';

export default function () {
const value = dataset.get("MyKey")
//@ts-ignore
const postResponse = http.post("http://httpbin.org/post", {data: value});
console.log(postResponse)
};