runner-runtime 1.0.54 → 1.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/events/api.js +19 -45
- package/events/index.js +11 -5
- package/libs/utils.js +27 -5
- package/package.json +2 -2
- package/tmp/request.js +253 -195
package/events/api.js
CHANGED
|
@@ -75,6 +75,10 @@ const convert2PostmanRequest = (request, option) => {
|
|
|
75
75
|
}
|
|
76
76
|
);
|
|
77
77
|
|
|
78
|
+
if (option?.env?.env_id == '2' && !_.includes(_.keys(uri?.query?.toObject()), 'target_id')) {
|
|
79
|
+
uri?.query?.members?.push(new sdk.QueryParam({ key: 'target_id', value: request?.target_id, }));
|
|
80
|
+
}
|
|
81
|
+
|
|
78
82
|
// path 参数
|
|
79
83
|
const uriVariable = [];
|
|
80
84
|
|
|
@@ -1718,7 +1722,7 @@ const preProcessMockExp = (request, requestPara, AllVars, option) => {
|
|
|
1718
1722
|
}
|
|
1719
1723
|
}
|
|
1720
1724
|
})
|
|
1721
|
-
|
|
1725
|
+
|
|
1722
1726
|
// 替换 Header 中可能的变量
|
|
1723
1727
|
if (!_.isEmpty(request.headers)) {
|
|
1724
1728
|
request?.headers?.each((item) => {
|
|
@@ -1894,7 +1898,7 @@ const initRequestJson = (event, option) => {
|
|
|
1894
1898
|
} else {
|
|
1895
1899
|
// 目录参数
|
|
1896
1900
|
const parentEnvServerID = _.get(getAPIFromCollection(option?.collection, parent_id), "server_id");
|
|
1897
|
-
if (_.isUndefined(
|
|
1901
|
+
if (_.isUndefined(_.get(requestJson, 'server_id')) && _.isString(parentEnvServerID)) {
|
|
1898
1902
|
envServerID = parentEnvServerID;
|
|
1899
1903
|
}
|
|
1900
1904
|
|
|
@@ -2009,49 +2013,19 @@ const initRequestJson = (event, option) => {
|
|
|
2009
2013
|
const requestUrl = _.isString(_.get(requestJson, 'url')) ? _.get(requestJson, 'url') : _.get(requestJson, 'request.url');
|
|
2010
2014
|
const { globals, env } = option;
|
|
2011
2015
|
|
|
2012
|
-
|
|
2013
|
-
|
|
2016
|
+
let envPreUrl = _.trim(_.get(_.find(_.get(option, `env.env_pre_urls`), (server) => {
|
|
2017
|
+
return server?.server_id == envServerID;
|
|
2018
|
+
}), 'uri'));
|
|
2014
2019
|
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2018
|
-
})
|
|
2019
|
-
requestUrlVarReplace = new Url(requestUrlVarReplace)
|
|
2020
|
-
_.unset(requestUrlVarReplace, 'host')
|
|
2021
|
-
} catch (e) { }
|
|
2022
|
-
|
|
2023
|
-
let mockID = requestJson?.target_id;
|
|
2024
|
-
|
|
2025
|
-
if (requestJson?.type == 'sample') {
|
|
2026
|
-
mockID = _.get(getAPIFromCollection(option?.collection, _.get(event, `data.parent_id`)), 'target_id') || mockID;
|
|
2020
|
+
if (envPreUrl != '') {
|
|
2021
|
+
if (option?.env?.env_id == '2' && !_.endsWith(envPreUrl, '/')) {
|
|
2022
|
+
envPreUrl = `${envPreUrl}/`;
|
|
2027
2023
|
}
|
|
2028
2024
|
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
requestUrlVarReplace.query.add({
|
|
2032
|
-
key: "echoapi_id",
|
|
2033
|
-
value: mockID
|
|
2034
|
-
});
|
|
2035
|
-
_.set(requestJson, "url", smartUrlJoin(`https://mock.echoapi.com/mock/${_.get(event, 'data.project_id')}/`, `${String(requestUrlVarReplace)}`));
|
|
2025
|
+
if (!_.startsWith(envPreUrl, '{{') && !_.startsWith(_.toLower(envPreUrl), 'http://') && !_.startsWith(_.toLower(envPreUrl), 'https://')) {
|
|
2026
|
+
_.set(requestJson, "url", smartUrlJoin('http://', envPreUrl, requestUrl));
|
|
2036
2027
|
} else {
|
|
2037
|
-
|
|
2038
|
-
key: "apipost_id",
|
|
2039
|
-
value: mockID
|
|
2040
|
-
});
|
|
2041
|
-
|
|
2042
|
-
_.set(requestJson, "url", smartUrlJoin(`https://mock.apipost.net/mock/${_.get(event, 'data.project_id')}/`, `${String(requestUrlVarReplace)}`));
|
|
2043
|
-
}
|
|
2044
|
-
} else {
|
|
2045
|
-
const envPreUrl = _.trim(_.get(_.find(_.get(option, `env.env_pre_urls`), (server) => {
|
|
2046
|
-
return server?.server_id == envServerID;
|
|
2047
|
-
}), 'uri'));
|
|
2048
|
-
|
|
2049
|
-
if (envPreUrl != '') {
|
|
2050
|
-
if (!_.startsWith(envPreUrl, '{{') && !_.startsWith(_.toLower(envPreUrl), 'http://') && !_.startsWith(_.toLower(envPreUrl), 'https://')) {
|
|
2051
|
-
_.set(requestJson, "url", smartUrlJoin('http://', envPreUrl, requestUrl));
|
|
2052
|
-
} else {
|
|
2053
|
-
_.set(requestJson, "url", smartUrlJoin(envPreUrl, requestUrl));
|
|
2054
|
-
}
|
|
2028
|
+
_.set(requestJson, "url", smartUrlJoin(envPreUrl, requestUrl));
|
|
2055
2029
|
}
|
|
2056
2030
|
}
|
|
2057
2031
|
|
|
@@ -2189,7 +2163,7 @@ module.exports = (event, option, callback, eventRuntimeData, eventResultList) =>
|
|
|
2189
2163
|
["globals", "environment", "variables"].forEach((varName) => {
|
|
2190
2164
|
_.assign(AllVars, _.get(eventRuntimeData, `variables.${varName}`))
|
|
2191
2165
|
})
|
|
2192
|
-
preProcessMockExp(request, postmanJSON, AllVars, _.pick(option, ['lang', 'custom_functions']))
|
|
2166
|
+
preProcessMockExp(request, { postmanJSON }, AllVars, _.pick(option, ['lang', 'custom_functions']))
|
|
2193
2167
|
},
|
|
2194
2168
|
|
|
2195
2169
|
beforePrerequest(err, cursor, events, item) {
|
|
@@ -2241,7 +2215,7 @@ module.exports = (event, option, callback, eventRuntimeData, eventResultList) =>
|
|
|
2241
2215
|
})
|
|
2242
2216
|
}
|
|
2243
2217
|
}
|
|
2244
|
-
|
|
2218
|
+
console.log(String(request?.url),111111)
|
|
2245
2219
|
const requestOptions = convert2EchoRequest(request, requestJson, postmanJSON, history);
|
|
2246
2220
|
_.set(eventRuntimeData, [event?.event_id, "request"], requestOptions);
|
|
2247
2221
|
|
|
@@ -2367,8 +2341,8 @@ module.exports = (event, option, callback, eventRuntimeData, eventResultList) =>
|
|
|
2367
2341
|
}
|
|
2368
2342
|
);
|
|
2369
2343
|
|
|
2370
|
-
if (scene === 'auto_test') {
|
|
2371
|
-
if (_.includes(['assert', 'assert_visual', 'api', 'sample', 'script'], event?.type)) {
|
|
2344
|
+
if (scene === 'auto_test' || requestJson?.target_type === 'sse') { // 纯粹为了兼容老的数据返回格式 todo...
|
|
2345
|
+
if (_.includes(['assert', 'assert_visual', 'api', 'sample', 'script', 'sql'], event?.type)) {
|
|
2372
2346
|
eventResultList.push(_.assign(camelCaseToSnakeCase(_.get(_.cloneDeep(eventRuntimeData), event?.event_id)), _.pick(event, ['type', 'event_id', 'test_id', 'iteration_id'])));
|
|
2373
2347
|
|
|
2374
2348
|
callback({
|
package/events/index.js
CHANGED
|
@@ -3,7 +3,7 @@ const atomicSleep = require("atomic-sleep"),
|
|
|
3
3
|
aTools = require("apipost-tools"),
|
|
4
4
|
JSON5 = require('json5'),
|
|
5
5
|
_ = require('lodash'),
|
|
6
|
-
{ returnBoolean, variableReplace, convertEndRuntimeState } = require('../libs/utils');
|
|
6
|
+
{ returnBoolean, variableReplaceForCondition, variableReplace, convertEndRuntimeState,repeatArrayToLength } = require('../libs/utils');
|
|
7
7
|
const executeApi = require('./api'),
|
|
8
8
|
executeWait = require('./wait');
|
|
9
9
|
|
|
@@ -20,8 +20,8 @@ const events = {
|
|
|
20
20
|
if: async (event, option, callback, eventRuntimeData, eventResultList) => { // ok
|
|
21
21
|
try {
|
|
22
22
|
const { data, children } = event;
|
|
23
|
-
const exp =
|
|
24
|
-
compare = data?.compare, value =
|
|
23
|
+
const exp = variableReplaceForCondition(data?.var, eventRuntimeData?.variables, option),
|
|
24
|
+
compare = data?.compare, value = variableReplaceForCondition(data?.value, eventRuntimeData?.variables, option);
|
|
25
25
|
const isMatched = returnBoolean(exp, compare, value);
|
|
26
26
|
const runtimeState = convertEndRuntimeState(eventRuntimeData, event?.event_id) || {}
|
|
27
27
|
const finalIfData = {
|
|
@@ -211,13 +211,19 @@ const events = {
|
|
|
211
211
|
const limit = loopType === 1 ? _.size(iterationData) : _.toInteger(_.get(data, 'limit', 1));
|
|
212
212
|
|
|
213
213
|
if (limit > 0) {
|
|
214
|
+
let iterationDataArr = _.cloneDeep(iterationData);
|
|
215
|
+
|
|
216
|
+
if (loopType === 2) {
|
|
217
|
+
iterationDataArr = repeatArrayToLength(iterationDataArr, limit)
|
|
218
|
+
}
|
|
219
|
+
|
|
214
220
|
const events = _.flatten(_.times(limit, () => _.cloneDeep(children)));
|
|
215
|
-
await iterationEvent(events, _.assign(_.cloneDeep(option), { iterationDataArr
|
|
221
|
+
await iterationEvent(events, _.assign(_.cloneDeep(option), { iterationDataArr, sleep, startTime, timeout }), callback, eventRuntimeData, eventResultList)
|
|
216
222
|
}
|
|
217
223
|
} else if (_.includes([3], loopType)) {
|
|
218
224
|
while (true) {
|
|
219
225
|
const condition = _.get(option, 'condition', _.get(data, 'loop_condition', {}));
|
|
220
|
-
const exp =
|
|
226
|
+
const exp = variableReplaceForCondition(condition?.var, eventRuntimeData?.variables, option), compare = condition?.compare, value = variableReplaceForCondition(condition?.value, eventRuntimeData?.variables, option);
|
|
221
227
|
|
|
222
228
|
if ((timeout === 0 || (timeout > 0 && startTime + timeout > Date.now())) && !returnBoolean(exp, compare, value)) {
|
|
223
229
|
await iterationEvent(_.cloneDeep(children), _.assign(_.cloneDeep(option), { iterationDataArr: iterationData, sleep, condition, startTime, timeout }), callback, eventRuntimeData, eventResultList);
|
package/libs/utils.js
CHANGED
|
@@ -329,6 +329,30 @@ const variableReplace = (str, variables, option) => {
|
|
|
329
329
|
}
|
|
330
330
|
}
|
|
331
331
|
|
|
332
|
+
const variableReplaceForCondition = (str, variables, option) => {
|
|
333
|
+
const AllVars = getInsideVariables();
|
|
334
|
+
["globals", "_globals", "environment", "variables"].forEach((varName) => {
|
|
335
|
+
_.assign(AllVars, _.get(variables, `${varName}`))
|
|
336
|
+
})
|
|
337
|
+
|
|
338
|
+
str = _.replace(str, /\{\{([^}]+)\}\}/g, (match, key) => {
|
|
339
|
+
return _.get(AllVars, key.trim(), match);
|
|
340
|
+
});
|
|
341
|
+
console.log(str, `strstrstrstrstrstr`)
|
|
342
|
+
const { lang, custom_functions } = option;
|
|
343
|
+
|
|
344
|
+
try {
|
|
345
|
+
const finalStr = mockExp(str, AllVars, lang, custom_functions);
|
|
346
|
+
|
|
347
|
+
if (finalStr === str) {
|
|
348
|
+
return undefined
|
|
349
|
+
}
|
|
350
|
+
return finalStr;
|
|
351
|
+
} catch (e) {
|
|
352
|
+
return undefined;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
332
356
|
const formatAutotestReportList = (eventResultList) => {
|
|
333
357
|
const list = [];
|
|
334
358
|
_.forEach(_.cloneDeep(eventResultList), (item) => {
|
|
@@ -504,7 +528,6 @@ const convertEndRuntimeState = (eventRuntimeData, event_id) => {
|
|
|
504
528
|
}
|
|
505
529
|
_.set(startAllActedUponVars, [key, 'actedUpon'], startActedUpon);
|
|
506
530
|
})
|
|
507
|
-
// console.log(startAllActedUponVars,`startAllActedUponVarsstartAllActedUponVarsstartAllActedUponVarsstartAllActedUponVars`)
|
|
508
531
|
// 当前变量
|
|
509
532
|
const { environment = {}, variables = {}, _globals = {}, iterationData = {} } = _.get(eventRuntimeData, 'variables', {});
|
|
510
533
|
const endVariables = { environment, variables, iterationData, globals: _globals };
|
|
@@ -533,11 +556,9 @@ const convertEndRuntimeState = (eventRuntimeData, event_id) => {
|
|
|
533
556
|
current: { value, actedUpon }
|
|
534
557
|
})
|
|
535
558
|
})
|
|
536
|
-
|
|
559
|
+
|
|
537
560
|
return { startTime, endTime, currentVariables };
|
|
538
|
-
} catch (e) {
|
|
539
|
-
console.log(e)
|
|
540
|
-
}
|
|
561
|
+
} catch (e) { }
|
|
541
562
|
}
|
|
542
563
|
|
|
543
564
|
|
|
@@ -552,6 +573,7 @@ module.exports = {
|
|
|
552
573
|
repeatArrayToLength,
|
|
553
574
|
convertEndRuntimeState,
|
|
554
575
|
returnBoolean,
|
|
576
|
+
variableReplaceForCondition,
|
|
555
577
|
getCaseInsensitive,
|
|
556
578
|
camelCaseToSnakeCase,
|
|
557
579
|
formatAutotestReportList,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "runner-runtime",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.56",
|
|
4
4
|
"description": "runner-runtime.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"is-image": "^3.0.0",
|
|
30
30
|
"is-svg": "^4.3.2",
|
|
31
31
|
"json-bigint": "^1.0.0",
|
|
32
|
-
"json-schema-faker-pro": "^0.5.
|
|
32
|
+
"json-schema-faker-pro": "^0.5.18",
|
|
33
33
|
"json5": "^2.2.3",
|
|
34
34
|
"jsonpath": "^1.1.1",
|
|
35
35
|
"lodash": "^4.17.21",
|
package/tmp/request.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
module.exports =
|
|
1
|
+
module.exports ={
|
|
2
2
|
"option": {
|
|
3
3
|
"scene": "auto_test",
|
|
4
|
-
"globals": {
|
|
4
|
+
"globals": {
|
|
5
|
+
"全局": "AAAA"
|
|
6
|
+
},
|
|
5
7
|
"project": {
|
|
6
8
|
"request": {
|
|
7
9
|
"header": {
|
|
@@ -46,7 +48,11 @@ module.exports = {
|
|
|
46
48
|
"parameter": []
|
|
47
49
|
},
|
|
48
50
|
"auth": {
|
|
49
|
-
"type": "
|
|
51
|
+
"type": "basic",
|
|
52
|
+
"basic": {
|
|
53
|
+
"username": "mengyu",
|
|
54
|
+
"password": "meinv"
|
|
55
|
+
}
|
|
50
56
|
},
|
|
51
57
|
"pre_tasks": [],
|
|
52
58
|
"post_tasks": []
|
|
@@ -58,46 +64,125 @@ module.exports = {
|
|
|
58
64
|
"env_pre_url": "",
|
|
59
65
|
"env_pre_urls": {
|
|
60
66
|
"1": {
|
|
61
|
-
"
|
|
67
|
+
"sort": 200,
|
|
62
68
|
"name": "默认服务",
|
|
63
|
-
"
|
|
69
|
+
"server_id": "1",
|
|
70
|
+
"server_type": 1,
|
|
64
71
|
"uri": ""
|
|
65
72
|
},
|
|
66
73
|
"default": {
|
|
67
|
-
"
|
|
74
|
+
"sort": 200,
|
|
68
75
|
"name": "默认服务",
|
|
69
|
-
"
|
|
76
|
+
"server_id": "1",
|
|
77
|
+
"server_type": 1,
|
|
70
78
|
"uri": ""
|
|
79
|
+
},
|
|
80
|
+
"1a89a49bc9808001": {
|
|
81
|
+
"sort": 600,
|
|
82
|
+
"name": "服务2",
|
|
83
|
+
"server_id": "1a89a49bc9808001",
|
|
84
|
+
"server_type": -1,
|
|
85
|
+
"uri": "go.apipost.cn"
|
|
71
86
|
}
|
|
72
87
|
},
|
|
73
|
-
"environment": {
|
|
74
|
-
"code": 201,
|
|
75
|
-
"key": "value"
|
|
76
|
-
}
|
|
88
|
+
"environment": {}
|
|
77
89
|
},
|
|
78
90
|
"cookies": {
|
|
79
91
|
"switch": 1,
|
|
80
|
-
"data": [
|
|
92
|
+
"data": [
|
|
93
|
+
{
|
|
94
|
+
"key": "liveCookie",
|
|
95
|
+
"value": "gin",
|
|
96
|
+
"maxAge": 120,
|
|
97
|
+
"domain": "go.apipost.cn",
|
|
98
|
+
"path": "/",
|
|
99
|
+
"secure": true,
|
|
100
|
+
"httpOnly": true,
|
|
101
|
+
"creation": "2025-04-21T08:44:38.530Z",
|
|
102
|
+
"name": "liveCookie",
|
|
103
|
+
"cookie_id": "4f9eb773ab1cf",
|
|
104
|
+
"expires": "Mon, 21 Apr 2025 08:46:39 GMT",
|
|
105
|
+
"project_id": "1a89866533408002"
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"key": "loseCookie",
|
|
109
|
+
"value": "gin",
|
|
110
|
+
"maxAge": 0,
|
|
111
|
+
"domain": "go.apipost.cn",
|
|
112
|
+
"path": "/",
|
|
113
|
+
"secure": true,
|
|
114
|
+
"httpOnly": true,
|
|
115
|
+
"creation": "2025-04-21T08:44:38.531Z",
|
|
116
|
+
"name": "loseCookie",
|
|
117
|
+
"cookie_id": "4f9eb773ab1d0",
|
|
118
|
+
"expires": "Mon, 21 Apr 2025 08:44:39 GMT",
|
|
119
|
+
"project_id": "1a89866533408002"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"key": "security_session_verify",
|
|
123
|
+
"value": "4560bdb4c5ddc22643bc99515ea21fcf",
|
|
124
|
+
"expires": "2025-04-21T13:42:33.000Z",
|
|
125
|
+
"path": "/",
|
|
126
|
+
"httpOnly": true,
|
|
127
|
+
"creation": "2025-04-18T05:42:33.287Z",
|
|
128
|
+
"name": "security_session_verify",
|
|
129
|
+
"cookie_id": "60289db7ab003",
|
|
130
|
+
"domain": "echo.apipost.cn",
|
|
131
|
+
"project_id": "1a89866533408002"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"key": "security_session_verify",
|
|
135
|
+
"value": "4560bdb4c5ddc22643bc99515ea21fcf",
|
|
136
|
+
"expires": "2025-04-21T13:42:29.000Z",
|
|
137
|
+
"path": "/",
|
|
138
|
+
"httpOnly": true,
|
|
139
|
+
"creation": "2025-04-18T05:42:30.039Z",
|
|
140
|
+
"name": "security_session_verify",
|
|
141
|
+
"cookie_id": "60289db7ab004",
|
|
142
|
+
"domain": "echo.apipost.cn",
|
|
143
|
+
"project_id": "1a89866533408002"
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"key": "security_session_verify",
|
|
147
|
+
"value": "4560bdb4c5ddc22643bc99515ea21fcf",
|
|
148
|
+
"expires": "2025-04-21T13:42:29.000Z",
|
|
149
|
+
"path": "/",
|
|
150
|
+
"httpOnly": true,
|
|
151
|
+
"creation": "2025-04-18T05:42:30.040Z",
|
|
152
|
+
"name": "security_session_verify",
|
|
153
|
+
"cookie_id": "60289db7ab005",
|
|
154
|
+
"domain": "echo.apipost.cn",
|
|
155
|
+
"project_id": "1a89866533408002"
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"key": "BDSVRTM",
|
|
159
|
+
"value": "0",
|
|
160
|
+
"path": "/",
|
|
161
|
+
"creation": "2025-04-18T08:04:03.277Z",
|
|
162
|
+
"name": "BDSVRTM",
|
|
163
|
+
"cookie_id": "602acf0fab006",
|
|
164
|
+
"domain": "www.baidu.com",
|
|
165
|
+
"project_id": "1a89866533408002"
|
|
166
|
+
}
|
|
167
|
+
]
|
|
81
168
|
},
|
|
82
169
|
"system_configs": {
|
|
83
170
|
"send_timeout": 0,
|
|
84
|
-
"auto_redirect": 1,
|
|
171
|
+
"auto_redirect": -1,
|
|
85
172
|
"max_redirect_time": 5,
|
|
86
|
-
"auto_gen_mock_url":
|
|
87
|
-
"request_param_auto_json": 1,
|
|
173
|
+
"auto_gen_mock_url": 1,
|
|
174
|
+
"request_param_auto_json": -1,
|
|
88
175
|
"proxy": {
|
|
89
176
|
"type": 2,
|
|
90
|
-
"envfirst":
|
|
91
|
-
"bypass": [
|
|
92
|
-
"export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890"
|
|
93
|
-
],
|
|
177
|
+
"envfirst": 1,
|
|
178
|
+
"bypass": [],
|
|
94
179
|
"protocols": [
|
|
95
|
-
"
|
|
96
|
-
"
|
|
180
|
+
"http",
|
|
181
|
+
"https"
|
|
97
182
|
],
|
|
98
183
|
"auth": {
|
|
99
184
|
"authenticate": -1,
|
|
100
|
-
"host": "
|
|
185
|
+
"host": "123.57.241.61:3128",
|
|
101
186
|
"username": "",
|
|
102
187
|
"password": ""
|
|
103
188
|
}
|
|
@@ -105,248 +190,221 @@ module.exports = {
|
|
|
105
190
|
"ca_cert": {
|
|
106
191
|
"open": 1,
|
|
107
192
|
"path": "",
|
|
108
|
-
"base64": "
|
|
193
|
+
"base64": ""
|
|
109
194
|
},
|
|
110
195
|
"client_cert": {
|
|
111
|
-
"https
|
|
112
|
-
"crt": {
|
|
113
|
-
"file_base64": "data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURuVENDQW9VQ0ZFcDd4Z3J2VVhteWEzTEdmcEFpenRNUkJvN3ZNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1JR0sKTVFzd0NRWURWUVFHRXdKRFRqRVFNQTRHQTFVRUNBd0hRbVZwYW1sdVp6RVFNQTRHQTFVRUJ3d0hRbVZwYW1sdQpaekVRTUE0R0ExVUVDZ3dIWVhCcGNHOXpkREVNTUFvR0ExVUVDd3dEWVhCME1SWXdGQVlEVlFRRERBMWpZeTVoCmNHbHdiM04wTG1Oak1SOHdIUVlKS29aSWh2Y05BUWtCRmhCaFpHMXBia0JoY0dsd2IzTjBMbU5qTUI0WERUSXoKTVRJeE1UQTVOREl4TmxvWERUTXpNVEl3T0RBNU5ESXhObG93Z1lveEN6QUpCZ05WQkFZVEFrTk9NUkF3RGdZRApWUVFJREFkQ1pXbHFhVzVuTVJBd0RnWURWUVFIREFkQ1pXbHFhVzVuTVE4d0RRWURWUVFLREFaaGNHbHZjM1F4CkREQUtCZ05WQkFzTUEyRndkREVXTUJRR0ExVUVBd3dOWTJNdVlYQnBjRzl6ZEM1all6RWdNQjRHQ1NxR1NJYjMKRFFFSkFSWVJZMnhwWlc1MFFHRndhWEJ2YzNRdVkyTXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBdwpnZ0VLQW9JQkFRRG5DalNwV2MvVEovcXg2ZHRCRUlKeHhpME0wTWc1M091U0lNK2dMVnNseTl4SVFTTndGWGhrCi8vRzhTOVl0d2lnMHpwZVNLUlhyNi9tdklQcjlsY3RBakRrZzQ4Q1BQSk5YYVo1RTdQVkRYbThtTXhhS2RBeXEKZVBkT2w2bGJ0a0pWRTB0cElWTFo4UkhEOWU4VFdiNENMNFBUSzkrNFhVSElEUU1FTUdNbWFnRUVRd3ordDdSTQpMZDVvcVAxdHVUdlhBbmlUbmU4TnZhYVQ3NDlqcFhYb3lnV29FaVcwOGJ3NmI2TmZwVVEyeFBsSkdrc2tiblRhCisyTWVqb1ZrSlpDbDFlOUhOYXV2a085WjhQamRYMG9nZTM0OE5pZW83amNDWWhBUmttanVJanhiMU1kU3dPdjcKMTVWS3EwcFFwbjNzVHJrWTVqdjZEeis3dWhSaXVnN2pBZ01CQUFFd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQgpBRGFCdG10NHVPaVpoVlpHdmo1Tko2RUhUUFNGZGxBaVd6U2tiSWllV2RIY1NhK0J3K2xBM1kyalJsYnZNUVVaCndiL21jaFRtNjFJRmlKbnYvN1h2MGtmMkJxUzkyMURXenJHa3FWQk5zRUdIMEdhWGVHMVMwL1pkNXg1RE4zMlEKRW9IRE95K2lOeDlwRzA2cy8ybUlGY1E3eXQ0cW9acXFQZUg4U3VIamZOanlnZnZFUGxiYUJHb0Y4V1dneFluLwp3TzlFK2pYN3VvdlZDWXVrY3NyaEprZzJwK3o5MUFVU3p2NlpTbHlnK3pGM2kyM1Q0ZXA5VDhwRTV2eXE3UlFnClNPT3BQd25uN0d5UWd2UzREbU5LMHkyazc5ZUdGb3VnTWxnS3g1Um5nMUQxNEd0ZFcvMlE0WGxNa2tHZ1ZsR2IKRVRkcGlES1JKWjNTTDJPZ1RsSFpibWM9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K",
|
|
114
|
-
"file_name": "client (1).crt",
|
|
115
|
-
"file_url": ""
|
|
116
|
-
},
|
|
117
|
-
"key": {
|
|
118
|
-
"file_base64": "",
|
|
119
|
-
"file_name": "",
|
|
120
|
-
"file_url": ""
|
|
121
|
-
},
|
|
196
|
+
"https://cc.apipost.cc:6003": {
|
|
122
197
|
"password": "",
|
|
123
|
-
"pfx": {
|
|
124
|
-
"file_base64": "",
|
|
125
|
-
"file_name": "",
|
|
126
|
-
"file_url": ""
|
|
127
|
-
},
|
|
128
|
-
"HOST": "https://*:443"
|
|
129
|
-
},
|
|
130
|
-
"https://apipost.cn:443": {
|
|
131
198
|
"crt": {
|
|
199
|
+
"file_url": "",
|
|
132
200
|
"file_base64": "data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURuVENDQW9VQ0ZFcDd4Z3J2VVhteWEzTEdmcEFpenRNUkJvN3ZNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1JR0sKTVFzd0NRWURWUVFHRXdKRFRqRVFNQTRHQTFVRUNBd0hRbVZwYW1sdVp6RVFNQTRHQTFVRUJ3d0hRbVZwYW1sdQpaekVRTUE0R0ExVUVDZ3dIWVhCcGNHOXpkREVNTUFvR0ExVUVDd3dEWVhCME1SWXdGQVlEVlFRRERBMWpZeTVoCmNHbHdiM04wTG1Oak1SOHdIUVlKS29aSWh2Y05BUWtCRmhCaFpHMXBia0JoY0dsd2IzTjBMbU5qTUI0WERUSXoKTVRJeE1UQTVOREl4TmxvWERUTXpNVEl3T0RBNU5ESXhObG93Z1lveEN6QUpCZ05WQkFZVEFrTk9NUkF3RGdZRApWUVFJREFkQ1pXbHFhVzVuTVJBd0RnWURWUVFIREFkQ1pXbHFhVzVuTVE4d0RRWURWUVFLREFaaGNHbHZjM1F4CkREQUtCZ05WQkFzTUEyRndkREVXTUJRR0ExVUVBd3dOWTJNdVlYQnBjRzl6ZEM1all6RWdNQjRHQ1NxR1NJYjMKRFFFSkFSWVJZMnhwWlc1MFFHRndhWEJ2YzNRdVkyTXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBdwpnZ0VLQW9JQkFRRG5DalNwV2MvVEovcXg2ZHRCRUlKeHhpME0wTWc1M091U0lNK2dMVnNseTl4SVFTTndGWGhrCi8vRzhTOVl0d2lnMHpwZVNLUlhyNi9tdklQcjlsY3RBakRrZzQ4Q1BQSk5YYVo1RTdQVkRYbThtTXhhS2RBeXEKZVBkT2w2bGJ0a0pWRTB0cElWTFo4UkhEOWU4VFdiNENMNFBUSzkrNFhVSElEUU1FTUdNbWFnRUVRd3ordDdSTQpMZDVvcVAxdHVUdlhBbmlUbmU4TnZhYVQ3NDlqcFhYb3lnV29FaVcwOGJ3NmI2TmZwVVEyeFBsSkdrc2tiblRhCisyTWVqb1ZrSlpDbDFlOUhOYXV2a085WjhQamRYMG9nZTM0OE5pZW83amNDWWhBUmttanVJanhiMU1kU3dPdjcKMTVWS3EwcFFwbjNzVHJrWTVqdjZEeis3dWhSaXVnN2pBZ01CQUFFd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQgpBRGFCdG10NHVPaVpoVlpHdmo1Tko2RUhUUFNGZGxBaVd6U2tiSWllV2RIY1NhK0J3K2xBM1kyalJsYnZNUVVaCndiL21jaFRtNjFJRmlKbnYvN1h2MGtmMkJxUzkyMURXenJHa3FWQk5zRUdIMEdhWGVHMVMwL1pkNXg1RE4zMlEKRW9IRE95K2lOeDlwRzA2cy8ybUlGY1E3eXQ0cW9acXFQZUg4U3VIamZOanlnZnZFUGxiYUJHb0Y4V1dneFluLwp3TzlFK2pYN3VvdlZDWXVrY3NyaEprZzJwK3o5MUFVU3p2NlpTbHlnK3pGM2kyM1Q0ZXA5VDhwRTV2eXE3UlFnClNPT3BQd25uN0d5UWd2UzREbU5LMHkyazc5ZUdGb3VnTWxnS3g1Um5nMUQxNEd0ZFcvMlE0WGxNa2tHZ1ZsR2IKRVRkcGlES1JKWjNTTDJPZ1RsSFpibWM9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K",
|
|
133
|
-
"file_name": "client (1).crt"
|
|
134
|
-
"file_url": ""
|
|
201
|
+
"file_name": "client (1).crt"
|
|
135
202
|
},
|
|
136
203
|
"key": {
|
|
137
|
-
"
|
|
138
|
-
"
|
|
139
|
-
"
|
|
204
|
+
"file_url": "",
|
|
205
|
+
"file_base64": "data:application/x-iwork-keynote-sffkey;base64,LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBNXdvMHFWblAweWY2c2VuYlFSQ0NjY1l0RE5ESU9kenJraURQb0MxYkpjdmNTRUVqCmNCVjRaUC94dkV2V0xjSW9OTTZYa2lrVjYrdjVyeUQ2L1pYTFFJdzVJT1BBanp5VFYybWVST3oxUTE1dkpqTVcKaW5RTXFuajNUcGVwVzdaQ1ZSTkxhU0ZTMmZFUncvWHZFMW0rQWkrRDB5dmZ1RjFCeUEwREJEQmpKbW9CQkVNTQovcmUwVEMzZWFLajliYms3MXdKNGs1M3ZEYjJtaysrUFk2VjE2TW9GcUJJbHRQRzhPbStqWDZWRU5zVDVTUnBMCkpHNTAydnRqSG82RlpDV1FwZFh2UnpXcnI1RHZXZkQ0M1Y5S0lIdCtQRFlucU80M0FtSVFFWkpvN2lJOFc5VEgKVXNEcis5ZVZTcXRLVUtaOTdFNjVHT1k3K2c4L3U3b1VZcm9PNHdJREFRQUJBb0lCQUNXckQwenhIS1lqcFlidQpSdFlEMkJDdXE5ZWtEcEVJaU12SlY3Q1kxSHlFRVVVaWdhR2Jqb2FCQ0N1WC9iSjJMbEgxd05hT3BrbFJydUt6CnNOZzVYT3NJTWFSQUhidjh0MVVRSGtMRWszUkphRHZGSm82cVB3cG9NSUg2emh6cXlVUFBvb0xnY1A2aGhERDcKM3QrN3lQUFlSVmpmbFZrY3MwWG5nUzlrcURXeDBXZStWOGFJMVJCOXVIbUdDcmo4djFZaHFSRWl2dXl4eUVXQwpZSkowVFRqSVhtMC92OVNJRE5FTjJKVExkYmlIdDBvQm9PZk1CWk5MSmhjSWI4cHkvTW5SYW9IN1EvN2VZQllQClNnMzJycXYvZlNjZGhWakltbTNyWEtaclV5NlErcUpNNGp1MCtpV0E4MzRzd2NiaGZhbU5XR2tLcUYzVmo4WEEKendGbkVjRUNnWUVBK056RHpxb3Vlbk9iZE5ORTdFa2FaTDc4TFFlL0VhTkYycHlhS2IvWTFac2F5U2ozSUMxbAp2RCs0V1hQamZJVWl3SldGeEtONGZyVnlldCtZWGhOZ0p3eU9wb2gyZmlaNzExR0paSWRudGFDV3lmRnpGVS8rClZQUm1yUUxIWS9MNHRhdnByTzlhTHBYVWVSYlc0NXVBbUZ5YUtJck1qSkFzMnFpeitKYUxGbUVDZ1lFQTdhcVUKOEE5SHpkVDFsQzB1ZlRoNG1Cdm43enpvSXJHNmY3amhvRVZuazEwWmozKy9pNEFmWEw3VHRuQmtXaTJvZElKbApDb2ZXdGRWbUxvTkhpOER0ZldyWFkzOWhra0ZSSEo5Y01qNEozcEJmaVp0ZUJyaFhucDg1c0xDS0pnWGVNZDNEClhkZVl1TERuczR3Y3FZTnpkbDRQL2cvRGl5RFB5Y29tc3NmdzQ4TUNnWUVBc2pUVWVwOWZIUXpBRzQ1V1lxV08Kb3Vvb2hzNXZRbUFhMjRzYzBoeXhWM1QwWDJ4WVd0Qm5jOEJsY0prT0k5THFxZUhvb29FMC9mZE0vVFEwVmRtbQpGeEJrN2xmMkVpdllycjJTbDB4bk5hYkRrK1MwdG1STUNlWGh5SzZldmJIMTY1SXBpVTcwMHpzenBXcDNneEdOCnFvMVZUd2JscHhwdkpEMStjdHJLeXNFQ2dZRUFyMlo0T3Q4Y0lCVnVGS2h2cWV5Mlc1UWt6UlJIUWV1bTkwSU0KQ2t1T2tGeGlVOXgxRWRCQjFTSGtmNzFjNG96VnlQNis4VkdsTFZkTDdVSG4ySVZQQUlPTWFKc0crSGlLRXpTdApSMHN2MzNqdmVWQVh5Wi9jMG0weWwyc0MyZUwweEJxbFo2bUl4YTJSb3BuaVFWeUpKeTl1WUJOa1BsYTk0Mi8wCnRYY0lHaDhDZ1lCbHJBaVdIOGU4aEhkWjdxTjNOTk51cVkvQjdJWFNPdzFIMEVKbjd3Ui9tZElzalFRYkJGL3gKa05YNndvZDVFeHBzRkVER2lJQ0RiQm1FbW5oaU1TWFBXREhoalZKSkFSUG5sL2Fxc0tNemt0dXdic29DbGQ2OApkT1hkbHNtbGhYZVdrcGp5ZUdCREZ5Y3hPdW80M3F6VzdOOUNpQ285dXBuNGZrSEg3Si95Znc9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=",
|
|
206
|
+
"file_name": "client (1).key"
|
|
140
207
|
},
|
|
141
|
-
"password": "1234",
|
|
142
208
|
"pfx": {
|
|
143
|
-
"
|
|
144
|
-
"
|
|
145
|
-
"
|
|
209
|
+
"file_url": "",
|
|
210
|
+
"file_base64": "",
|
|
211
|
+
"file_name": ""
|
|
146
212
|
},
|
|
147
|
-
"HOST": "https://apipost.
|
|
213
|
+
"HOST": "https://cc.apipost.cc:6003"
|
|
148
214
|
}
|
|
149
215
|
}
|
|
150
216
|
},
|
|
151
|
-
"custom_functions": {
|
|
217
|
+
"custom_functions": {
|
|
218
|
+
"fn_test04": "\n// 返回函數處理後的text,text為函數的入參 \nreturn text.includes(\"To be\");"
|
|
219
|
+
},
|
|
152
220
|
"collection": [
|
|
153
221
|
{
|
|
154
|
-
"target_id": "
|
|
222
|
+
"target_id": "2d1574ffab006",
|
|
155
223
|
"target_type": "api",
|
|
156
224
|
"parent_id": "0",
|
|
157
|
-
"name": "
|
|
225
|
+
"name": "post接口",
|
|
158
226
|
"request": {
|
|
159
227
|
"auth": {
|
|
160
228
|
"type": "inherit"
|
|
161
229
|
},
|
|
230
|
+
"header": {
|
|
231
|
+
"parameter": []
|
|
232
|
+
},
|
|
233
|
+
"query": {
|
|
234
|
+
"query_add_equal": 1,
|
|
235
|
+
"parameter": []
|
|
236
|
+
},
|
|
237
|
+
"restful": {
|
|
238
|
+
"parameter": []
|
|
239
|
+
},
|
|
240
|
+
"cookie": {
|
|
241
|
+
"cookie_encode": 1,
|
|
242
|
+
"parameter": []
|
|
243
|
+
},
|
|
162
244
|
"body": {
|
|
163
|
-
"mode": "
|
|
164
|
-
"parameter": [
|
|
165
|
-
"raw": "{\n \"id\": 1,\n \"name\": \"\"\n}",
|
|
166
|
-
"raw_parameter": [
|
|
245
|
+
"mode": "form-data",
|
|
246
|
+
"parameter": [
|
|
167
247
|
{
|
|
168
|
-
"param_id": "
|
|
169
|
-
"
|
|
170
|
-
"
|
|
171
|
-
"
|
|
172
|
-
"key": "id",
|
|
248
|
+
"param_id": "2d54bf27713cb",
|
|
249
|
+
"key": "mock",
|
|
250
|
+
"value": "{{$mockjs.date()|format(YYYY-MM-DD HH:mm:ss,+08:00)}}",
|
|
251
|
+
"field_type": "string",
|
|
173
252
|
"not_null": 1,
|
|
174
|
-
"
|
|
253
|
+
"description": "反回时间",
|
|
254
|
+
"is_checked": 1,
|
|
255
|
+
"content_type": "string"
|
|
175
256
|
},
|
|
176
257
|
{
|
|
177
|
-
"param_id": "
|
|
178
|
-
"
|
|
258
|
+
"param_id": "2d54dd0f713cc",
|
|
259
|
+
"key": "mock1",
|
|
260
|
+
"value": "{{$fakerjs.Animal.bear}}",
|
|
179
261
|
"field_type": "string",
|
|
180
|
-
"is_checked": 1,
|
|
181
|
-
"key": "name",
|
|
182
262
|
"not_null": 1,
|
|
183
|
-
"
|
|
184
|
-
"
|
|
185
|
-
|
|
186
|
-
}
|
|
263
|
+
"description": "返回熊类型",
|
|
264
|
+
"is_checked": 1,
|
|
265
|
+
"content_type": "string"
|
|
187
266
|
}
|
|
188
267
|
],
|
|
268
|
+
"binary": "",
|
|
269
|
+
"raw": "{\n \"storeName\": \"SuperMart Online\",\n \"categories\": [\n {\n \"categoryName\": \"Electronics\",\n \"products\": [\n {\n \"productId\": 1,\n \"productName\": \"Smartphone X Pro\",\n \"brand\": \"TechGiant\",\n \"model\": \"X Pro 2025\",\n \"description\": \"The Smartphone X Pro is a high - end device with a 6.7 - inch AMOLED display, 5G connectivity, and a powerful octa - core processor. It comes with 12GB of RAM and 256GB of internal storage. The triple - camera setup on the back provides excellent photography capabilities, and the front - facing camera is great for selfies and video calls.\",\n \"price\": 999.99,\n \"stock\": 50,\n \"reviews\": [\n {\n \"reviewerName\": \"JohnDoe123\",\n \"rating\": 4.5,\n \"comment\": \"This phone is amazing! The display is sharp, and the performance is top - notch. The camera takes great photos, and the battery life is decent.\"\n },\n {\n \"reviewerName\": \"JaneSmith456\",\n \"rating\": 4.0,\n \"comment\": \"Overall, a great phone. However, I found the fingerprint sensor to be a bit slow at times.\"\n }\n ]\n },\n {\n \"productId\": 2,\n \"productName\": \"Laptop ProBook\",\n \"brand\": \"CompuTech\",\n \"model\": \"ProBook 5000\",\n \"description\": \"The Laptop ProBook is a powerful and portable laptop designed for professionals. It features a 15.6 - inch Full HD display, an Intel Core i7 processor, 16GB of RAM, and a 512GB SSD. It also comes with a backlit keyboard and a long - lasting battery, making it ideal for on - the - go work.\",\n \"price\": 1499.99,\n \"stock\": 30,\n \"reviews\": [\n {\n \"reviewerName\": \"TechEnthusiast789\",\n \"rating\": 4.8,\n \"comment\": \"This laptop is a beast! It handles all my work tasks with ease, and the battery life is impressive. The build quality is also very good.\"\n },\n {\n \"reviewerName\": \"OfficeWorker234\",\n \"rating\": 4.2,\n \"comment\": \"I'm very happy with my purchase. The only thing I would like to see improved is the display brightness in direct sunlight.\"\n }\n ]\n }\n ]\n },\n {\n \"categoryName\": \"Clothing\",\n \"products\": [\n {\n \"productId\": 3,\n \"productName\": \"Men's Cotton Shirt\",\n \"brand\": \"FashionFusion\",\n \"model\": \"Classic Fit\",\n \"description\": \"This men's cotton shirt is made from high - quality, breathable cotton. It has a classic fit, a button - down collar, and long sleeves. It comes in a variety of colors and is perfect for both casual and semi - formal occasions.\",\n \"price\": 49.99,\n \"stock\": 100,\n \"reviews\": [\n {\n \"reviewerName\": \"StyleGuy567\",\n \"rating\": 4.0,\n \"comment\": \"The shirt fits well and is comfortable to wear. The color is exactly as shown in the picture.\"\n },\n {\n \"reviewerName\": \"BusinessMan890\",\n \"rating\": 3.5,\n \"comment\": \"The shirt is okay, but I expected the fabric to be a bit thicker.\"\n }\n ]\n },\n {\n \"productId\": 4,\n \"productName\": \"Women's Summer Dress\",\n \"brand\": \"ChicStyles\",\n \"model\": \"Floral Print\",\n \"description\": \"This women's summer dress is a trendy and feminine piece. It features a floral print, a V - neckline, and a flowy skirt. It is made from lightweight and comfortable fabric, making it perfect for warm summer days.\",\n \"price\": 79.99,\n \"stock\": 80,\n \"reviews\": [\n {\n \"reviewerName\": \"Fashionista123\",\n \"rating\": 4.7,\n \"comment\": \"This dress is so cute! I love the floral print and the way it fits. It's my new favorite summer dress.\"\n },\n {\n \"reviewerName\": \"BeachLover456\",\n \"rating\": 4.3,\n \"comment\": \"The dress is very comfortable and looks great on. However, the sizing runs a bit small, so I had to order a size up.\"\n }\n ]\n }\n ]\n },\n {\n \"categoryName\": \"Home Appliances\",\n \"products\": [\n {\n \"productId\": 5,\n \"productName\": \"Refrigerator CoolMaster\",\n \"brand\": \"HomeTech\",\n \"model\": \"CoolMaster 3000\",\n \"description\": \"The Refrigerator CoolMaster is a large - capacity refrigerator with advanced cooling technology. It has a spacious interior, adjustable shelves, and a built - in ice maker. It also features energy - saving mode, making it an environmentally friendly choice.\",\n \"price\": 1999.99,\n \"stock\": 20,\n \"reviews\": [\n {\n \"reviewerName\": \"HomeOwner789\",\n \"rating\": 4.6,\n \"comment\": \"This refrigerator is amazing! It has a lot of space, and the ice maker works great. The energy - saving mode is a plus.\"\n },\n {\n \"reviewerName\": \"KitchenExpert234\",\n \"rating\": 4.1,\n \"comment\": \"The refrigerator is well - built, but the noise level could be a bit lower.\"\n }\n ]\n },\n {\n \"productId\": 6,\n \"productName\": \"Coffee Maker BrewPro\",\n \"brand\": \"KitchenWiz\",\n \"model\": \"BrewPro 200\",\n \"description\": \"The Coffee Maker BrewPro is a programmable coffee maker that can brew up to 12 cups of coffee at a time. It has a built - in grinder, a water filter, and a keep - warm function. It also comes with a user - friendly control panel, making it easy to use.\",\n \"price\": 129.99,\n \"stock\": 60,\n \"reviews\": [\n {\n \"reviewerName\": \"CoffeeAddict567\",\n \"rating\": 4.4,\n \"comment\": \"This coffee maker makes great coffee! The grinder is very efficient, and the keep - warm function works well.\"\n },\n {\n \"reviewerName\": \"BreakfastLover890\",\n \"rating\": 4.0,\n \"comment\": \"The coffee maker is easy to use, but the cleaning process could be a bit simpler.\"\n }\n ]\n }\n ]\n }\n ]\n}",
|
|
270
|
+
"raw_parameter": [],
|
|
189
271
|
"raw_schema": {
|
|
190
272
|
"type": "object"
|
|
191
|
-
}
|
|
192
|
-
"binary": {}
|
|
273
|
+
}
|
|
193
274
|
},
|
|
194
275
|
"pre_tasks": [],
|
|
195
276
|
"post_tasks": [
|
|
196
|
-
{
|
|
197
|
-
"type": "customScript",
|
|
198
|
-
"enabled": 1,
|
|
199
|
-
"data": "pm.environment.set(\"code\", 201);\napt.test(\"正文匹配含有字符串\", function () {\n apt.expect(apt.response.text()).to.include(\"期望查找的字符串\");\n });",
|
|
200
|
-
"name": "自定义脚本",
|
|
201
|
-
"id": "3d53b40ffd6022"
|
|
202
|
-
},
|
|
203
|
-
{
|
|
204
|
-
"type": "database",
|
|
205
|
-
"enabled": 1,
|
|
206
|
-
"data": {
|
|
207
|
-
"variables": [],
|
|
208
|
-
"connectionId": "2b9e0de71864000",
|
|
209
|
-
"isConsoleOutput": -1,
|
|
210
|
-
"query": ""
|
|
211
|
-
},
|
|
212
|
-
"name": "数据库",
|
|
213
|
-
"id": "bcb573cb17048"
|
|
214
|
-
},
|
|
215
277
|
{
|
|
216
278
|
"type": "assert",
|
|
279
|
+
"id": "c48d63a3a3006",
|
|
280
|
+
"name": "断言1111111",
|
|
217
281
|
"enabled": 1,
|
|
218
282
|
"data": {
|
|
219
|
-
"type": "
|
|
283
|
+
"type": "responseTime",
|
|
220
284
|
"expression": {
|
|
221
|
-
"
|
|
222
|
-
"
|
|
223
|
-
"
|
|
224
|
-
}
|
|
225
|
-
},
|
|
226
|
-
"name": "断言",
|
|
227
|
-
"id": "bcb5b9931704a"
|
|
228
|
-
}
|
|
229
|
-
],
|
|
230
|
-
"header": {
|
|
231
|
-
"parameter": []
|
|
232
|
-
},
|
|
233
|
-
"query": {
|
|
234
|
-
"query_add_equal": 1,
|
|
235
|
-
"parameter": [
|
|
236
|
-
{
|
|
237
|
-
"param_id": "3d55bc7d39b04a",
|
|
238
|
-
"description": "",
|
|
239
|
-
"field_type": "string",
|
|
240
|
-
"is_checked": 1,
|
|
241
|
-
"key": "id",
|
|
242
|
-
"not_null": 1,
|
|
243
|
-
"value": "1",
|
|
244
|
-
"schema": {
|
|
245
|
-
"type": "string"
|
|
246
|
-
}
|
|
247
|
-
},
|
|
248
|
-
{
|
|
249
|
-
"param_id": "bca53b876e042",
|
|
250
|
-
"description": "",
|
|
251
|
-
"field_type": "string",
|
|
252
|
-
"is_checked": 1,
|
|
253
|
-
"key": "",
|
|
254
|
-
"not_null": 1,
|
|
255
|
-
"value": "",
|
|
256
|
-
"schema": {
|
|
257
|
-
"type": "string"
|
|
285
|
+
"compareType": "lt",
|
|
286
|
+
"compareValue": "30",
|
|
287
|
+
"path": "1"
|
|
258
288
|
}
|
|
259
289
|
}
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
"cookie": {
|
|
263
|
-
"cookie_encode": 1,
|
|
264
|
-
"parameter": []
|
|
265
|
-
},
|
|
266
|
-
"restful": {
|
|
267
|
-
"parameter": []
|
|
268
|
-
}
|
|
290
|
+
}
|
|
291
|
+
]
|
|
269
292
|
},
|
|
270
293
|
"parents": [],
|
|
271
|
-
"method": "
|
|
294
|
+
"method": "POST",
|
|
272
295
|
"protocol": "http/1.1",
|
|
273
|
-
"url": "
|
|
296
|
+
"url": "go.apipost.cn",
|
|
274
297
|
"pre_url": ""
|
|
275
298
|
}
|
|
276
299
|
],
|
|
277
|
-
"database_configs": {
|
|
278
|
-
|
|
279
|
-
"type": "mysql",
|
|
280
|
-
"dbconfig": {
|
|
281
|
-
"host": "10.10.10.20",
|
|
282
|
-
"port": 3306,
|
|
283
|
-
"user": "root",
|
|
284
|
-
"password": "12333333333",
|
|
285
|
-
"database": "apipost",
|
|
286
|
-
"auth_source": ""
|
|
287
|
-
},
|
|
288
|
-
"ssh": {
|
|
289
|
-
"enable": -1,
|
|
290
|
-
"host": "",
|
|
291
|
-
"port": 22,
|
|
292
|
-
"auth_type": 1,
|
|
293
|
-
"username": "",
|
|
294
|
-
"password": "",
|
|
295
|
-
"private_key": "",
|
|
296
|
-
"passphrase": ""
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
},
|
|
300
|
-
"name": "未命名测试用例",
|
|
300
|
+
"database_configs": {},
|
|
301
|
+
"name": "【勿动】自动化测试循环——满足条件跳出循环,一直不执行",
|
|
301
302
|
"ignore_error": -1,
|
|
302
303
|
"enable_sandbox": -1,
|
|
303
304
|
"iterationCount": 1,
|
|
304
305
|
"sleep": 0,
|
|
305
|
-
"testing_id": "
|
|
306
|
+
"testing_id": "640959ffab519",
|
|
306
307
|
"iterates_data_id": "0",
|
|
307
308
|
"iterationData": []
|
|
308
309
|
},
|
|
309
310
|
"test_events": [
|
|
310
311
|
{
|
|
311
|
-
"parent_event_id": "0",
|
|
312
|
-
"enabled": 1,
|
|
313
|
-
"type": "if",
|
|
314
312
|
"data": {
|
|
315
|
-
"
|
|
316
|
-
"
|
|
317
|
-
"
|
|
313
|
+
"name": "满足条件退出循环",
|
|
314
|
+
"sleep": 0,
|
|
315
|
+
"loop_type": 3,
|
|
316
|
+
"loop_timeout": 0,
|
|
317
|
+
"loop_condition": {
|
|
318
|
+
"var": "1",
|
|
319
|
+
"value": "1",
|
|
320
|
+
"compare": "uneq"
|
|
321
|
+
},
|
|
322
|
+
"loop_traverse_data": {
|
|
323
|
+
"name": "",
|
|
324
|
+
"type": 1,
|
|
325
|
+
"iterationData": []
|
|
326
|
+
}
|
|
318
327
|
},
|
|
319
|
-
"project_id": "2adc267c9064000",
|
|
320
|
-
"test_id": "c754fff306002",
|
|
321
|
-
"event_id": "c7552c4306003",
|
|
322
328
|
"sort": 1,
|
|
329
|
+
"type": "loop",
|
|
330
|
+
"enabled": 1,
|
|
331
|
+
"test_id": "640959ffab519",
|
|
332
|
+
"event_id": "640e4777ab51b",
|
|
333
|
+
"project_id": "1a89866533408002",
|
|
334
|
+
"parent_event_id": "0",
|
|
323
335
|
"children": [
|
|
324
336
|
{
|
|
325
337
|
"type": "api",
|
|
326
|
-
"auto_sync":
|
|
327
|
-
"test_id": "
|
|
328
|
-
"event_id": "
|
|
338
|
+
"auto_sync": false,
|
|
339
|
+
"test_id": "640959ffab519",
|
|
340
|
+
"event_id": "640e9153ab51d",
|
|
329
341
|
"enabled": 1,
|
|
330
342
|
"data": {
|
|
331
|
-
"target_id": "
|
|
332
|
-
"project_id": "
|
|
343
|
+
"target_id": "2d1574ffab006",
|
|
344
|
+
"project_id": "1a89866533408002",
|
|
333
345
|
"parent_id": "0",
|
|
334
|
-
"target_type": "api"
|
|
346
|
+
"target_type": "api",
|
|
347
|
+
"apiData": {
|
|
348
|
+
"name": "post接口",
|
|
349
|
+
"method": "POST",
|
|
350
|
+
"protocol": "http/1.1",
|
|
351
|
+
"url": "{{url}}",
|
|
352
|
+
"request": {
|
|
353
|
+
"auth": {
|
|
354
|
+
"type": "inherit"
|
|
355
|
+
},
|
|
356
|
+
"body": {
|
|
357
|
+
"raw": "{\n \"storeName\": \"SuperMart Online\",\n \"categories\": [\n {\n \"categoryName\": \"Electronics\",\n \"products\": [\n {\n \"productId\": 1,\n \"productName\": \"Smartphone X Pro\",\n \"brand\": \"TechGiant\",\n \"model\": \"X Pro 2025\",\n \"description\": \"The Smartphone X Pro is a high - end device with a 6.7 - inch AMOLED display, 5G connectivity, and a powerful octa - core processor. It comes with 12GB of RAM and 256GB of internal storage. The triple - camera setup on the back provides excellent photography capabilities, and the front - facing camera is great for selfies and video calls.\",\n \"price\": 999.99,\n \"stock\": 50,\n \"reviews\": [\n {\n \"reviewerName\": \"JohnDoe123\",\n \"rating\": 4.5,\n \"comment\": \"This phone is amazing! The display is sharp, and the performance is top - notch. The camera takes great photos, and the battery life is decent.\"\n },\n {\n \"reviewerName\": \"JaneSmith456\",\n \"rating\": 4.0,\n \"comment\": \"Overall, a great phone. However, I found the fingerprint sensor to be a bit slow at times.\"\n }\n ]\n },\n {\n \"productId\": 2,\n \"productName\": \"Laptop ProBook\",\n \"brand\": \"CompuTech\",\n \"model\": \"ProBook 5000\",\n \"description\": \"The Laptop ProBook is a powerful and portable laptop designed for professionals. It features a 15.6 - inch Full HD display, an Intel Core i7 processor, 16GB of RAM, and a 512GB SSD. It also comes with a backlit keyboard and a long - lasting battery, making it ideal for on - the - go work.\",\n \"price\": 1499.99,\n \"stock\": 30,\n \"reviews\": [\n {\n \"reviewerName\": \"TechEnthusiast789\",\n \"rating\": 4.8,\n \"comment\": \"This laptop is a beast! It handles all my work tasks with ease, and the battery life is impressive. The build quality is also very good.\"\n },\n {\n \"reviewerName\": \"OfficeWorker234\",\n \"rating\": 4.2,\n \"comment\": \"I'm very happy with my purchase. The only thing I would like to see improved is the display brightness in direct sunlight.\"\n }\n ]\n }\n ]\n },\n {\n \"categoryName\": \"Clothing\",\n \"products\": [\n {\n \"productId\": 3,\n \"productName\": \"Men's Cotton Shirt\",\n \"brand\": \"FashionFusion\",\n \"model\": \"Classic Fit\",\n \"description\": \"This men's cotton shirt is made from high - quality, breathable cotton. It has a classic fit, a button - down collar, and long sleeves. It comes in a variety of colors and is perfect for both casual and semi - formal occasions.\",\n \"price\": 49.99,\n \"stock\": 100,\n \"reviews\": [\n {\n \"reviewerName\": \"StyleGuy567\",\n \"rating\": 4.0,\n \"comment\": \"The shirt fits well and is comfortable to wear. The color is exactly as shown in the picture.\"\n },\n {\n \"reviewerName\": \"BusinessMan890\",\n \"rating\": 3.5,\n \"comment\": \"The shirt is okay, but I expected the fabric to be a bit thicker.\"\n }\n ]\n },\n {\n \"productId\": 4,\n \"productName\": \"Women's Summer Dress\",\n \"brand\": \"ChicStyles\",\n \"model\": \"Floral Print\",\n \"description\": \"This women's summer dress is a trendy and feminine piece. It features a floral print, a V - neckline, and a flowy skirt. It is made from lightweight and comfortable fabric, making it perfect for warm summer days.\",\n \"price\": 79.99,\n \"stock\": 80,\n \"reviews\": [\n {\n \"reviewerName\": \"Fashionista123\",\n \"rating\": 4.7,\n \"comment\": \"This dress is so cute! I love the floral print and the way it fits. It's my new favorite summer dress.\"\n },\n {\n \"reviewerName\": \"BeachLover456\",\n \"rating\": 4.3,\n \"comment\": \"The dress is very comfortable and looks great on. However, the sizing runs a bit small, so I had to order a size up.\"\n }\n ]\n }\n ]\n },\n {\n \"categoryName\": \"Home Appliances\",\n \"products\": [\n {\n \"productId\": 5,\n \"productName\": \"Refrigerator CoolMaster\",\n \"brand\": \"HomeTech\",\n \"model\": \"CoolMaster 3000\",\n \"description\": \"The Refrigerator CoolMaster is a large - capacity refrigerator with advanced cooling technology. It has a spacious interior, adjustable shelves, and a built - in ice maker. It also features energy - saving mode, making it an environmentally friendly choice.\",\n \"price\": 1999.99,\n \"stock\": 20,\n \"reviews\": [\n {\n \"reviewerName\": \"HomeOwner789\",\n \"rating\": 4.6,\n \"comment\": \"This refrigerator is amazing! It has a lot of space, and the ice maker works great. The energy - saving mode is a plus.\"\n },\n {\n \"reviewerName\": \"KitchenExpert234\",\n \"rating\": 4.1,\n \"comment\": \"The refrigerator is well - built, but the noise level could be a bit lower.\"\n }\n ]\n },\n {\n \"productId\": 6,\n \"productName\": \"Coffee Maker BrewPro\",\n \"brand\": \"KitchenWiz\",\n \"model\": \"BrewPro 200\",\n \"description\": \"The Coffee Maker BrewPro is a programmable coffee maker that can brew up to 12 cups of coffee at a time. It has a built - in grinder, a water filter, and a keep - warm function. It also comes with a user - friendly control panel, making it easy to use.\",\n \"price\": 129.99,\n \"stock\": 60,\n \"reviews\": [\n {\n \"reviewerName\": \"CoffeeAddict567\",\n \"rating\": 4.4,\n \"comment\": \"This coffee maker makes great coffee! The grinder is very efficient, and the keep - warm function works well.\"\n },\n {\n \"reviewerName\": \"BreakfastLover890\",\n \"rating\": 4.0,\n \"comment\": \"The coffee maker is easy to use, but the cleaning process could be a bit simpler.\"\n }\n ]\n }\n ]\n }\n ]\n}",
|
|
358
|
+
"mode": "form-data",
|
|
359
|
+
"binary": "",
|
|
360
|
+
"parameter": [
|
|
361
|
+
{
|
|
362
|
+
"key": "mock",
|
|
363
|
+
"value": "{{$mockjs.date()|format(YYYY-MM-DD HH:mm:ss,+08:00)}}",
|
|
364
|
+
"not_null": 1,
|
|
365
|
+
"param_id": "2d54bf27713cb",
|
|
366
|
+
"field_type": "string",
|
|
367
|
+
"is_checked": 1,
|
|
368
|
+
"description": "反回时间",
|
|
369
|
+
"content_type": "string"
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
"key": "mock1",
|
|
373
|
+
"value": "{{$fakerjs.Animal.bear}}",
|
|
374
|
+
"not_null": 1,
|
|
375
|
+
"param_id": "2d54dd0f713cc",
|
|
376
|
+
"field_type": "string",
|
|
377
|
+
"is_checked": 1,
|
|
378
|
+
"description": "返回熊类型",
|
|
379
|
+
"content_type": "string"
|
|
380
|
+
}
|
|
381
|
+
],
|
|
382
|
+
"raw_schema": {
|
|
383
|
+
"type": "object"
|
|
384
|
+
},
|
|
385
|
+
"raw_parameter": []
|
|
386
|
+
},
|
|
387
|
+
"query": {
|
|
388
|
+
"parameter": [],
|
|
389
|
+
"query_add_equal": 1
|
|
390
|
+
},
|
|
391
|
+
"cookie": {
|
|
392
|
+
"parameter": [],
|
|
393
|
+
"cookie_encode": 1
|
|
394
|
+
},
|
|
395
|
+
"header": {
|
|
396
|
+
"parameter": []
|
|
397
|
+
},
|
|
398
|
+
"restful": {
|
|
399
|
+
"parameter": []
|
|
400
|
+
},
|
|
401
|
+
"pre_tasks": [],
|
|
402
|
+
"post_tasks": []
|
|
403
|
+
}
|
|
404
|
+
}
|
|
335
405
|
}
|
|
336
406
|
}
|
|
337
407
|
]
|
|
338
|
-
},
|
|
339
|
-
{
|
|
340
|
-
"parent_event_id": "0",
|
|
341
|
-
"enabled": 1,
|
|
342
|
-
"type": "wait",
|
|
343
|
-
"data": {
|
|
344
|
-
"sleep": 1000
|
|
345
|
-
},
|
|
346
|
-
"project_id": "2adc267c9064000",
|
|
347
|
-
"test_id": "c754fff306002",
|
|
348
|
-
"event_id": "c757153f06006",
|
|
349
|
-
"sort": 3
|
|
350
408
|
}
|
|
351
409
|
]
|
|
352
410
|
}
|