有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
若要定制压测引擎在执行压测任务时的行为(传入自定义参数值、覆盖默认配置),您可设置全局 Options,来控制诸如 TLS/HTTP/WebSocket 通信的配置参数、预处理/后处理的超时时间等。
要设置全局 Options,您可在脚本最外层定义一个 option 对象(export const option = {...}),再根据您的需求,在 option 对象中定义 tlsConfighttp 等字段。
说明:
参数详情可参见 PTS JavaScript API 文档:Option

HTTP 全局配置

通过 option 里的 http 字段,您可配置压测引擎作为 HTTP 客户端的相关参数,这些参数对本次压测任务的所有 HTTP 请求全局生效。
常用参数如下:
headers:设置请求头。
basicAuth:使用 HTTP basic auth 认证时,通过该参数传入用户名和密码。
disableKeepAlives:若要禁用长连接,可将该字段设置为 true。
discardResponseBody:若要丢弃服务端返回的响应包体,可将该字段设置为 true。
http2:若要启用 HTTP2 协议,可将该字段设置为 true。
maxIdleConns:单个 VU 的最大连接数,默认值为 100个。
maxIdleConnsPerHost:单个 VU 针对单个 host(地址+端口)的最大连接数,默认值为 2。
maxRedirects:重定向跳转的最大次数,默认值为 10次。
timeout:请求超时时间,单位为毫秒,默认值为 10 秒。
脚本示例:
import http from 'pts/http';
import { check } from 'pts';

export const option = {
http: {
maxRedirects: 10,
maxIdleConns: 100,
headers: {
'key': 'value'
}
}
}
export default function () {
// get request with headers and parameters
const resp1 = http.get('http://httpbin.org/get', {
headers: {
Connection: 'keep-alive',
'User-Agent': 'pts-engine',
},
query: {
name1: 'value1',
name2: 'value2',
},
});

console.log(resp1.json().args.name1); // 'value1'
check('status is 200', () => resp1.statusCode === 200);
check('body.args.name1 equals value1', () => resp1.json().args.name1 === 'value1');
check('headers.key equals value', () => resp1.json().headers.key === 'value')
}

WebSocket 全局配置

通过 option 里的 ws 字段,您可配置压测引擎作为 WebSocket 客户端的相关参数,这些参数对本次压测任务的所有 WebSocket 请求全局生效。
常用参数如下:
handshakeTimeout:握手超时时间,单位为毫秒,默认值为 30 秒。
readTimeout:读消息超时时间,单位为毫秒,默认不限制。
writeControlTimeout:写控制指令超时时间,单位为毫秒,默认为 10 秒。
writeTimeout:写消息超时时间,单位为毫秒,默认不限制。
示例:
export const option = {
ws: {
writeTimeout: 3000,
readTimeout: 3000,
}
}

TLS 全局配置

压测引擎作为客户端,在建立 TLS (Transport Layer Security/传输层安全协议)连接时,支持以下配置选项:
insecureSkipVerify:是否验证服务器的证书链和主机名。若设置为 true 则不验证(默认为 false)。
rootCAs:在验证服务器证书时,使用的一组根证书颁发机构。 若为空,则默认使用主机的根 CA 集。
certificates:在双向 TLS 认证中,客户端提供的供服务端验证的证书列表(证书文件可通过场景的 文件管理 > 请求文件 上传)。
示例:
export const option = {
tlsConfig: {
'localhost': {
insecureSkipVerify: false,
rootCAs: [open('ca.crt')],
certificates: [{cert: open('client.crt'), key: open('client.key')}]
}
}
}

预处理与后处理配置

setupTimeoutSeconds:预处理(setup)步骤的超时时间。默认为 60 秒。 示例:
export const option = { setupTimeoutSeconds: 30 }
teardownTimeoutSeconds:后处理(teardown)步骤的超时时间。默认为 60 秒。
export const option = {
teardownTimeoutSeconds: 30
}
说明:
关于脚本的预处理/后处理的详情,参见:脚本概述