runner-runtime 1.0.58 → 1.0.60
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 +23 -5
- package/events/index.js +44 -21
- package/events/wait.js +6 -5
- package/index.js +18 -7
- package/libs/utils.js +20 -18
- package/package.json +1 -1
- package/tmp/request.js +293 -234
package/events/api.js
CHANGED
|
@@ -563,6 +563,21 @@ const convert2PostmanOptions = (request, option, variables) => {
|
|
|
563
563
|
// 请求信息
|
|
564
564
|
const { requestJson } = request;
|
|
565
565
|
|
|
566
|
+
// localVariables
|
|
567
|
+
const tmpLocalVariables = [];
|
|
568
|
+
_.forEach(_.get(variables, "variables"), (value, key) => {
|
|
569
|
+
tmpLocalVariables.push({
|
|
570
|
+
value,
|
|
571
|
+
key,
|
|
572
|
+
type: "any",
|
|
573
|
+
enabled: true,
|
|
574
|
+
});
|
|
575
|
+
});
|
|
576
|
+
|
|
577
|
+
const localVariables = new sdk.VariableScope({
|
|
578
|
+
values: tmpLocalVariables,
|
|
579
|
+
});
|
|
580
|
+
|
|
566
581
|
// 创建迭代数据
|
|
567
582
|
const iterationData = _.get(variables, 'iterationData');
|
|
568
583
|
const data = [iterationData];
|
|
@@ -686,6 +701,7 @@ const convert2PostmanOptions = (request, option, variables) => {
|
|
|
686
701
|
fileResolver: require("fs"),
|
|
687
702
|
data,
|
|
688
703
|
environment,
|
|
704
|
+
localVariables,
|
|
689
705
|
globals,
|
|
690
706
|
requester,
|
|
691
707
|
systemProxy: async function (url, callback) {
|
|
@@ -2127,7 +2143,7 @@ module.exports = (event, option, callback, eventRuntimeData, eventResultList) =>
|
|
|
2127
2143
|
}), options, (err, run) => {
|
|
2128
2144
|
if (err) {
|
|
2129
2145
|
reject({
|
|
2130
|
-
action: '
|
|
2146
|
+
action: 'systemError',
|
|
2131
2147
|
message: String(err),
|
|
2132
2148
|
event_id: event?.event_id
|
|
2133
2149
|
});
|
|
@@ -2144,7 +2160,9 @@ module.exports = (event, option, callback, eventRuntimeData, eventResultList) =>
|
|
|
2144
2160
|
message: err?.message
|
|
2145
2161
|
})
|
|
2146
2162
|
if (scriptType === 'prerequest') {
|
|
2147
|
-
|
|
2163
|
+
try {
|
|
2164
|
+
run.abort();
|
|
2165
|
+
} catch (e) { }
|
|
2148
2166
|
}
|
|
2149
2167
|
}
|
|
2150
2168
|
}
|
|
@@ -2217,7 +2235,7 @@ module.exports = (event, option, callback, eventRuntimeData, eventResultList) =>
|
|
|
2217
2235
|
})
|
|
2218
2236
|
}
|
|
2219
2237
|
}
|
|
2220
|
-
|
|
2238
|
+
|
|
2221
2239
|
const requestOptions = convert2EchoRequest(request, requestJson, postmanJSON, history);
|
|
2222
2240
|
_.set(eventRuntimeData, [event?.event_id, "request"], requestOptions);
|
|
2223
2241
|
|
|
@@ -2360,7 +2378,7 @@ module.exports = (event, option, callback, eventRuntimeData, eventResultList) =>
|
|
|
2360
2378
|
}
|
|
2361
2379
|
} catch (e) {
|
|
2362
2380
|
reject({
|
|
2363
|
-
action: '
|
|
2381
|
+
action: 'systemError',
|
|
2364
2382
|
message: String(e),
|
|
2365
2383
|
event_id: event?.event_id
|
|
2366
2384
|
});
|
|
@@ -2375,7 +2393,7 @@ module.exports = (event, option, callback, eventRuntimeData, eventResultList) =>
|
|
|
2375
2393
|
);
|
|
2376
2394
|
} catch (e) {
|
|
2377
2395
|
reject({
|
|
2378
|
-
action: '
|
|
2396
|
+
action: 'systemError',
|
|
2379
2397
|
message: String(e),
|
|
2380
2398
|
event_id: event?.event_id
|
|
2381
2399
|
});
|
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, variableReplaceForCondition, variableReplace, convertEndRuntimeState,repeatArrayToLength } = 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,6 +20,9 @@ const events = {
|
|
|
20
20
|
if: async (event, option, callback, eventRuntimeData, eventResultList) => { // ok
|
|
21
21
|
try {
|
|
22
22
|
const { data, children } = event;
|
|
23
|
+
const finalChildren = _.filter(children, (o) => {
|
|
24
|
+
return _.toInteger(o?.enabled > 0)
|
|
25
|
+
});
|
|
23
26
|
const exp = variableReplaceForCondition(data?.var, eventRuntimeData?.variables, option),
|
|
24
27
|
compare = data?.compare, value = variableReplaceForCondition(data?.value, eventRuntimeData?.variables, option);
|
|
25
28
|
const isMatched = returnBoolean(exp, compare, value);
|
|
@@ -52,13 +55,18 @@ const events = {
|
|
|
52
55
|
eventResultList.push(finalIfData?.data)
|
|
53
56
|
callback(finalIfData);
|
|
54
57
|
|
|
55
|
-
if (isMatched && _.isArray(
|
|
56
|
-
const { iterationData } = option;
|
|
57
|
-
|
|
58
|
+
if (isMatched && _.isArray(finalChildren) && !_.isEmpty(finalChildren)) {
|
|
59
|
+
const { iterationData } = option, iterationDataArr = [iterationData];
|
|
60
|
+
|
|
61
|
+
// if (!_.isEmpty(iterationData) && _.isObject(iterationData)) {
|
|
62
|
+
// iterationDataArr = _.flatMap([iterationData], (element) => _.times(_.size(finalChildren), () => element));
|
|
63
|
+
// }
|
|
64
|
+
await iterationEvent(finalChildren, _.assign(_.cloneDeep(option), { iterationDataArr }), callback, eventRuntimeData, eventResultList)
|
|
58
65
|
}
|
|
66
|
+
|
|
59
67
|
} catch (e) {
|
|
60
68
|
throw ({
|
|
61
|
-
action: '
|
|
69
|
+
action: 'systemError',
|
|
62
70
|
message: String(e),
|
|
63
71
|
event_id: event?.event_id
|
|
64
72
|
})
|
|
@@ -68,20 +76,31 @@ const events = {
|
|
|
68
76
|
},
|
|
69
77
|
begin: async (event, option, callback, eventRuntimeData, eventResultList) => { // ok
|
|
70
78
|
try {
|
|
71
|
-
const {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
const { children } = event;
|
|
80
|
+
const finalChildren = _.filter(children, (o) => {
|
|
81
|
+
return _.toInteger(o?.enabled > 0)
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
if (_.isArray(finalChildren) && !_.isEmpty(finalChildren)) {
|
|
85
|
+
const { iterationData } = option, iterationDataArr = [iterationData];
|
|
86
|
+
|
|
87
|
+
// if (!_.isEmpty(iterationData) && _.isObject(iterationData)) {
|
|
88
|
+
// iterationDataArr = _.flatMap([iterationData], (element) => _.times(_.size(finalChildren), () => element));
|
|
89
|
+
// }
|
|
90
|
+
|
|
91
|
+
await iterationEvent(finalChildren, _.assign(_.cloneDeep(option), { iterationDataArr }), callback, eventRuntimeData, eventResultList)
|
|
92
|
+
// 分组不再支持测试数据(无实际意义),测试数据只针对循环单独设置
|
|
93
|
+
// const { iterationData, enable_data } = data;
|
|
94
|
+
|
|
95
|
+
// if (_.toInteger(enable_data) > 0) {
|
|
96
|
+
// await iterationEvent(finalChildren, _.assign(_.cloneDeep(option), { iterationDataArr: iterationData }), callback, eventRuntimeData, eventResultList)
|
|
97
|
+
// } else {
|
|
98
|
+
// await iterationEvent(finalChildren, option, callback, eventRuntimeData, eventResultList)
|
|
99
|
+
// }
|
|
81
100
|
}
|
|
82
101
|
} catch (e) {
|
|
83
102
|
throw ({
|
|
84
|
-
action: '
|
|
103
|
+
action: 'systemError',
|
|
85
104
|
message: String(e),
|
|
86
105
|
event_id: event?.event_id
|
|
87
106
|
})
|
|
@@ -92,11 +111,15 @@ const events = {
|
|
|
92
111
|
loop: async (event, option, callback, eventRuntimeData, eventResultList) => { // ok
|
|
93
112
|
try {
|
|
94
113
|
const { data, children } = event;
|
|
114
|
+
const finalChildren = _.filter(children, (o) => {
|
|
115
|
+
return _.toInteger(o?.enabled > 0)
|
|
116
|
+
})
|
|
117
|
+
|
|
95
118
|
const sleep = _.toInteger(variableReplace(_.get(data, 'sleep', 0), eventRuntimeData?.variables, option));
|
|
96
119
|
const startTime = _.toInteger(_.get(option, 'startTime', Date.now()));
|
|
97
120
|
const timeout = _.toInteger(_.get(option, 'timeout', _.toInteger(variableReplace(_.get(data, 'loop_timeout', 0), eventRuntimeData?.variables, option))));
|
|
98
121
|
|
|
99
|
-
if (_.isArray(
|
|
122
|
+
if (_.isArray(finalChildren) && !_.isEmpty(finalChildren)) {
|
|
100
123
|
const iterationData = [];
|
|
101
124
|
const enableData = _.toInteger(data?.enable_data) || 1;
|
|
102
125
|
|
|
@@ -217,7 +240,8 @@ const events = {
|
|
|
217
240
|
iterationDataArr = repeatArrayToLength(iterationDataArr, limit)
|
|
218
241
|
}
|
|
219
242
|
|
|
220
|
-
|
|
243
|
+
iterationDataArr = _.flatMap(iterationDataArr, (element) => _.times(_.size(finalChildren), () => element));
|
|
244
|
+
const events = _.flatten(_.times(limit, () => _.cloneDeep(finalChildren)));
|
|
221
245
|
await iterationEvent(events, _.assign(_.cloneDeep(option), { iterationDataArr, sleep, startTime, timeout }), callback, eventRuntimeData, eventResultList)
|
|
222
246
|
}
|
|
223
247
|
} else if (_.includes([3], loopType)) {
|
|
@@ -226,7 +250,7 @@ const events = {
|
|
|
226
250
|
const exp = variableReplaceForCondition(condition?.var, eventRuntimeData?.variables, option), compare = condition?.compare, value = variableReplaceForCondition(condition?.value, eventRuntimeData?.variables, option);
|
|
227
251
|
|
|
228
252
|
if ((timeout === 0 || (timeout > 0 && startTime + timeout > Date.now())) && !returnBoolean(exp, compare, value)) {
|
|
229
|
-
await iterationEvent(_.cloneDeep(
|
|
253
|
+
await iterationEvent(_.cloneDeep(finalChildren), _.assign(_.cloneDeep(option), { iterationDataArr: iterationData, sleep, condition, startTime, timeout }), callback, eventRuntimeData, eventResultList);
|
|
230
254
|
} else {
|
|
231
255
|
break;
|
|
232
256
|
}
|
|
@@ -235,7 +259,7 @@ const events = {
|
|
|
235
259
|
}
|
|
236
260
|
} catch (e) {
|
|
237
261
|
throw ({
|
|
238
|
-
action: '
|
|
262
|
+
action: 'systemError',
|
|
239
263
|
message: String(e),
|
|
240
264
|
event_id: event?.event_id
|
|
241
265
|
})
|
|
@@ -292,7 +316,6 @@ const iterationEvent = async (events, option, callback, eventRuntimeData, eventR
|
|
|
292
316
|
|
|
293
317
|
if (_.isObject(event) && _.has(event, 'type') && _.toInteger(event?.enabled) > 0) {
|
|
294
318
|
let { iterationDataArr } = option;
|
|
295
|
-
|
|
296
319
|
if (!_.isArray(iterationDataArr)) {
|
|
297
320
|
iterationDataArr = _.values(iterationDataArr);
|
|
298
321
|
}
|
package/events/wait.js
CHANGED
|
@@ -5,6 +5,11 @@ const { variableReplace, convertEndRuntimeState } = require("../libs/utils");
|
|
|
5
5
|
module.exports = async (event, option, callback, eventRuntimeData, eventResultList) => {
|
|
6
6
|
try {
|
|
7
7
|
const sleep = _.toInteger(variableReplace(event?.data?.sleep, eventRuntimeData?.variables, option)) || 0;
|
|
8
|
+
|
|
9
|
+
if (sleep > 0) {
|
|
10
|
+
atomicSleep(sleep)
|
|
11
|
+
}
|
|
12
|
+
|
|
8
13
|
const runtimeState = convertEndRuntimeState(eventRuntimeData, event?.event_id) || {}
|
|
9
14
|
const finalWaitData = {
|
|
10
15
|
action: 'request',
|
|
@@ -22,13 +27,9 @@ module.exports = async (event, option, callback, eventRuntimeData, eventResultLi
|
|
|
22
27
|
|
|
23
28
|
eventResultList.push(finalWaitData?.data)
|
|
24
29
|
callback(finalWaitData);
|
|
25
|
-
|
|
26
|
-
if (sleep > 0) {
|
|
27
|
-
atomicSleep(sleep)
|
|
28
|
-
}
|
|
29
30
|
} catch (e) {
|
|
30
31
|
throw ({
|
|
31
|
-
action: '
|
|
32
|
+
action: 'systemError',
|
|
32
33
|
message: String(e),
|
|
33
34
|
event_id: event?.event_id
|
|
34
35
|
})
|
package/index.js
CHANGED
|
@@ -3,14 +3,21 @@ const _ = require('lodash');
|
|
|
3
3
|
const moment = require('moment');
|
|
4
4
|
const aTools = require("apipost-tools");
|
|
5
5
|
const { executeEvent, iterationEvent } = require('./events');
|
|
6
|
-
const ABORT_RECURSION_ERROR = ['
|
|
6
|
+
const ABORT_RECURSION_ERROR = ['systemError']; //需要跳出递归的错误
|
|
7
7
|
|
|
8
8
|
// 执行场景
|
|
9
9
|
const run = async (events, option, callback) => {
|
|
10
10
|
const { iterationCount, iterationData, scene } = option;
|
|
11
|
+
|
|
12
|
+
if (scene == 'auto_test') {
|
|
13
|
+
events = _.filter(events, function (o) { return _.toInteger(o?.enabled) > 0; })
|
|
14
|
+
}
|
|
15
|
+
|
|
11
16
|
const tempEvents = _.cloneDeep(_.flatten(new Array(scene == 'auto_test' ? _.max([_.toInteger(iterationCount), 1]) : 1).fill(events))) || [];
|
|
12
|
-
const iterationDataArr = repeatArrayToLength(iterationData, _.size(
|
|
17
|
+
const iterationDataArr = _.flatMap(repeatArrayToLength(iterationData, _.max([_.toInteger(iterationCount), 1])), (element) => _.times(_.size(events), () => element));
|
|
13
18
|
const eventOptions = _.pick(option, ["scene", "lang", "project", "env", "globals", "cookies", "system_configs", "custom_functions", "collection", "database_configs", "enable_sandbox", "sleep", "name", "testing_id"]);
|
|
19
|
+
|
|
20
|
+
// 初始化变量
|
|
14
21
|
const eventRuntimeData = {
|
|
15
22
|
variables: {
|
|
16
23
|
environment: {},
|
|
@@ -18,20 +25,24 @@ const run = async (events, option, callback) => {
|
|
|
18
25
|
globals: {},
|
|
19
26
|
_globals: {},
|
|
20
27
|
iterationData: {},
|
|
28
|
+
iterationDataArr: []
|
|
21
29
|
}
|
|
22
30
|
};
|
|
23
31
|
|
|
24
|
-
|
|
25
|
-
const tempVars = { environment: _.get(option, 'env.environment', {}), globals: _.get(option, 'globals', {}), iterationData: _.get(option, 'iterationData', []) };
|
|
32
|
+
const tempVars = { environment: _.get(option, 'env.environment', {}), globals: _.get(option, 'globals', {}), iterationDataArr };
|
|
26
33
|
|
|
27
|
-
['environment', 'globals', '
|
|
34
|
+
['environment', 'globals', 'iterationDataArr'].forEach((type) => {
|
|
28
35
|
_.forEach(tempVars[type], (value, key) => {
|
|
29
36
|
if (_.isUndefined(_.get(eventRuntimeData, ['variables', type, key]))) {
|
|
30
|
-
_.set(eventRuntimeData, ['variables', type, key], value)
|
|
37
|
+
_.set(eventRuntimeData, ['variables', type, key], value);
|
|
38
|
+
|
|
39
|
+
if (type === 'globals') {
|
|
40
|
+
_.set(eventRuntimeData, ['variables', `_${type}`, key], value);
|
|
41
|
+
}
|
|
31
42
|
}
|
|
32
43
|
})
|
|
33
44
|
})
|
|
34
|
-
|
|
45
|
+
|
|
35
46
|
const eventResultList = [];
|
|
36
47
|
const startTimeAt = Date.now();
|
|
37
48
|
|
package/libs/utils.js
CHANGED
|
@@ -292,7 +292,7 @@ const returnBoolean = (exp, compare, value) => {
|
|
|
292
292
|
const getCaseInsensitive = (object, keyToFind) => {
|
|
293
293
|
try {
|
|
294
294
|
// 先将要查找的键转换成小写
|
|
295
|
-
const lowerKey =
|
|
295
|
+
const lowerKey = _.toLower(keyToFind);
|
|
296
296
|
|
|
297
297
|
if (!_.isObject(object)) {
|
|
298
298
|
return undefined;
|
|
@@ -300,7 +300,7 @@ const getCaseInsensitive = (object, keyToFind) => {
|
|
|
300
300
|
|
|
301
301
|
// 在对象的所有键中查找
|
|
302
302
|
for (const key in object) {
|
|
303
|
-
if (
|
|
303
|
+
if (_.toLower(key) === lowerKey) {
|
|
304
304
|
return object[key];
|
|
305
305
|
}
|
|
306
306
|
}
|
|
@@ -330,6 +330,10 @@ const variableReplace = (str, variables, option) => {
|
|
|
330
330
|
}
|
|
331
331
|
|
|
332
332
|
const variableReplaceForCondition = (str, variables, option) => {
|
|
333
|
+
if (!_.startsWith(str, '{{') || !_.endsWith(str, '}}')) {
|
|
334
|
+
return str;
|
|
335
|
+
}
|
|
336
|
+
|
|
333
337
|
const AllVars = getInsideVariables();
|
|
334
338
|
["globals", "_globals", "environment", "variables"].forEach((varName) => {
|
|
335
339
|
_.assign(AllVars, _.get(variables, `${varName}`))
|
|
@@ -338,13 +342,13 @@ const variableReplaceForCondition = (str, variables, option) => {
|
|
|
338
342
|
str = _.replace(str, /\{\{([^}]+)\}\}/g, (match, key) => {
|
|
339
343
|
return _.get(AllVars, key.trim(), match);
|
|
340
344
|
});
|
|
341
|
-
|
|
345
|
+
|
|
342
346
|
const { lang, custom_functions } = option;
|
|
343
347
|
|
|
344
348
|
try {
|
|
345
349
|
const finalStr = mockExp(str, AllVars, lang, custom_functions);
|
|
346
350
|
|
|
347
|
-
if (finalStr === str) {
|
|
351
|
+
if (finalStr === str && _.startsWith(str, '{{') && _.endsWith(str, '}}')) {
|
|
348
352
|
return undefined
|
|
349
353
|
}
|
|
350
354
|
return finalStr;
|
|
@@ -426,19 +430,19 @@ const formatAutotestReport = (startTimeAt, eventResultList) => {
|
|
|
426
430
|
totalResponseSize = totalResponseSize + _.toInteger(item?.response?.response_size);
|
|
427
431
|
totalResponseTime = totalResponseTime + _.toInteger(item?.response?.response_time);
|
|
428
432
|
|
|
429
|
-
if (!_.isEmpty(item?.status?.assert) && _.isArray(item?.status?.assert)) {
|
|
430
|
-
const assertFailure = _.map(item?.status?.assert, (assertItem) => {
|
|
431
|
-
return assertItem?.passed === false
|
|
432
|
-
})
|
|
433
|
-
|
|
434
|
-
report.assert.total = report.assert.total + _.size(item?.status?.assert);
|
|
435
|
-
report.assert.error = report.assert.error + _.size(assertFailure);
|
|
436
|
-
}
|
|
437
|
-
|
|
438
433
|
if (_.toLower(item?.status?.http) != 'ok') {
|
|
439
434
|
report.http.error++;
|
|
440
435
|
}
|
|
441
436
|
}
|
|
437
|
+
|
|
438
|
+
if (_.includes(['api', 'sample', 'assert', 'assert_visual'], item?.type) && !_.isEmpty(item?.status?.assert) && _.isArray(item?.status?.assert)) {
|
|
439
|
+
const assertFailure = _.map(item?.status?.assert, (assertItem) => {
|
|
440
|
+
return assertItem?.passed === false
|
|
441
|
+
})
|
|
442
|
+
|
|
443
|
+
report.assert.total = report.assert.total + _.size(item?.status?.assert);
|
|
444
|
+
report.assert.error = report.assert.error + _.size(assertFailure);
|
|
445
|
+
}
|
|
442
446
|
})
|
|
443
447
|
|
|
444
448
|
report.http.success = report.http.total - report.http.error;
|
|
@@ -522,12 +526,13 @@ const convertEndRuntimeState = (eventRuntimeData, event_id) => {
|
|
|
522
526
|
["variables", "iterationData", "environment", "globals"].some((type) => {
|
|
523
527
|
if (!_.isUndefined(_.get(startVariables, [`${type}`, key]))) {
|
|
524
528
|
startActedUpon = type;
|
|
525
|
-
return;
|
|
529
|
+
return true;
|
|
526
530
|
}
|
|
527
531
|
})
|
|
528
532
|
}
|
|
529
533
|
_.set(startAllActedUponVars, [key, 'actedUpon'], startActedUpon);
|
|
530
534
|
})
|
|
535
|
+
|
|
531
536
|
// 当前变量
|
|
532
537
|
const { environment = {}, variables = {}, _globals = {}, iterationData = {} } = _.get(eventRuntimeData, 'variables', {});
|
|
533
538
|
const endVariables = { environment, variables, iterationData, globals: _globals };
|
|
@@ -541,15 +546,12 @@ const convertEndRuntimeState = (eventRuntimeData, event_id) => {
|
|
|
541
546
|
|
|
542
547
|
_.forEach(endAllVars, (value, key) => {
|
|
543
548
|
let actedUpon = undefined;
|
|
544
|
-
|
|
545
|
-
// if (_.get(startAllVars, key) != value) {
|
|
546
549
|
["variables", "iterationData", "environment", "globals"].some((type) => {
|
|
547
550
|
if (!_.isUndefined(_.get(endVariables, [`${type}`, key]))) {
|
|
548
551
|
actedUpon = type;
|
|
549
|
-
return;
|
|
552
|
+
return true;
|
|
550
553
|
}
|
|
551
554
|
})
|
|
552
|
-
// }
|
|
553
555
|
|
|
554
556
|
_.set(currentVariables, [key], {
|
|
555
557
|
start: _.pick(startAllActedUponVars[key], ['value', 'actedUpon']),
|
package/package.json
CHANGED
package/tmp/request.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
module.exports ={
|
|
1
|
+
module.exports = {
|
|
2
2
|
"option": {
|
|
3
3
|
"scene": "auto_test",
|
|
4
|
-
"globals": {
|
|
5
|
-
"全局": "AAAA"
|
|
6
|
-
},
|
|
4
|
+
"globals": {},
|
|
7
5
|
"project": {
|
|
8
6
|
"request": {
|
|
9
7
|
"header": {
|
|
@@ -48,11 +46,7 @@ module.exports ={
|
|
|
48
46
|
"parameter": []
|
|
49
47
|
},
|
|
50
48
|
"auth": {
|
|
51
|
-
"type": "
|
|
52
|
-
"basic": {
|
|
53
|
-
"username": "mengyu",
|
|
54
|
-
"password": "meinv"
|
|
55
|
-
}
|
|
49
|
+
"type": "noauth"
|
|
56
50
|
},
|
|
57
51
|
"pre_tasks": [],
|
|
58
52
|
"post_tasks": []
|
|
@@ -64,28 +58,22 @@ module.exports ={
|
|
|
64
58
|
"env_pre_url": "",
|
|
65
59
|
"env_pre_urls": {
|
|
66
60
|
"1": {
|
|
67
|
-
"sort": 200,
|
|
68
|
-
"name": "默认服务",
|
|
69
61
|
"server_id": "1",
|
|
70
|
-
"
|
|
62
|
+
"name": "默认服务",
|
|
63
|
+
"sort": 1000,
|
|
71
64
|
"uri": ""
|
|
72
65
|
},
|
|
73
66
|
"default": {
|
|
74
|
-
"sort": 200,
|
|
75
|
-
"name": "默认服务",
|
|
76
67
|
"server_id": "1",
|
|
77
|
-
"
|
|
68
|
+
"name": "默认服务",
|
|
69
|
+
"sort": 1000,
|
|
78
70
|
"uri": ""
|
|
79
|
-
},
|
|
80
|
-
"1a89a49bc9808001": {
|
|
81
|
-
"sort": 600,
|
|
82
|
-
"name": "服务2",
|
|
83
|
-
"server_id": "1a89a49bc9808001",
|
|
84
|
-
"server_type": -1,
|
|
85
|
-
"uri": "go.apipost.cn"
|
|
86
71
|
}
|
|
87
72
|
},
|
|
88
|
-
"environment": {
|
|
73
|
+
"environment": {
|
|
74
|
+
"code": 201,
|
|
75
|
+
"key": "value"
|
|
76
|
+
}
|
|
89
77
|
},
|
|
90
78
|
"cookies": {
|
|
91
79
|
"switch": 1,
|
|
@@ -98,11 +86,11 @@ module.exports ={
|
|
|
98
86
|
"path": "/",
|
|
99
87
|
"secure": true,
|
|
100
88
|
"httpOnly": true,
|
|
101
|
-
"creation": "2025-04-
|
|
89
|
+
"creation": "2025-04-23T18:21:01.716Z",
|
|
102
90
|
"name": "liveCookie",
|
|
103
|
-
"cookie_id": "
|
|
104
|
-
"expires": "
|
|
105
|
-
"project_id": "
|
|
91
|
+
"cookie_id": "cfbb441f1704b",
|
|
92
|
+
"expires": "Wed, 23 Apr 2025 18:23:04 GMT",
|
|
93
|
+
"project_id": "2adc267c9064000"
|
|
106
94
|
},
|
|
107
95
|
{
|
|
108
96
|
"key": "loseCookie",
|
|
@@ -112,77 +100,33 @@ module.exports ={
|
|
|
112
100
|
"path": "/",
|
|
113
101
|
"secure": true,
|
|
114
102
|
"httpOnly": true,
|
|
115
|
-
"creation": "2025-04-
|
|
103
|
+
"creation": "2025-04-23T18:21:01.716Z",
|
|
116
104
|
"name": "loseCookie",
|
|
117
|
-
"cookie_id": "
|
|
118
|
-
"expires": "
|
|
119
|
-
"project_id": "
|
|
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"
|
|
105
|
+
"cookie_id": "cfbb441f1704c",
|
|
106
|
+
"expires": "Wed, 23 Apr 2025 18:21:04 GMT",
|
|
107
|
+
"project_id": "2adc267c9064000"
|
|
166
108
|
}
|
|
167
109
|
]
|
|
168
110
|
},
|
|
169
111
|
"system_configs": {
|
|
170
112
|
"send_timeout": 0,
|
|
171
|
-
"auto_redirect":
|
|
113
|
+
"auto_redirect": 1,
|
|
172
114
|
"max_redirect_time": 5,
|
|
173
|
-
"auto_gen_mock_url": 1,
|
|
174
|
-
"request_param_auto_json":
|
|
115
|
+
"auto_gen_mock_url": -1,
|
|
116
|
+
"request_param_auto_json": 1,
|
|
175
117
|
"proxy": {
|
|
176
118
|
"type": 2,
|
|
177
|
-
"envfirst": 1,
|
|
178
|
-
"bypass": [
|
|
119
|
+
"envfirst": -1,
|
|
120
|
+
"bypass": [
|
|
121
|
+
"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"
|
|
122
|
+
],
|
|
179
123
|
"protocols": [
|
|
180
|
-
"
|
|
181
|
-
"
|
|
124
|
+
"https",
|
|
125
|
+
"http"
|
|
182
126
|
],
|
|
183
127
|
"auth": {
|
|
184
128
|
"authenticate": -1,
|
|
185
|
-
"host": "
|
|
129
|
+
"host": "127.0.0.1:7890",
|
|
186
130
|
"username": "",
|
|
187
131
|
"password": ""
|
|
188
132
|
}
|
|
@@ -190,219 +134,334 @@ module.exports ={
|
|
|
190
134
|
"ca_cert": {
|
|
191
135
|
"open": 1,
|
|
192
136
|
"path": "",
|
|
193
|
-
"base64": ""
|
|
137
|
+
"base64": "data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR0VENDQXAyZ0F3SUJBZ0lKQU9ueUNxV09FeCtsTUEwR0NTcUdTSWIzRFFFQkJRVUFNRVV4Q3pBSkJnTlYKQkFZVEFrRlZNUk13RVFZRFZRUUlFd3BUYjIxbExWTjBZWFJsTVNFd0h3WURWUVFLRXhoSmJuUmxjbTVsZENCWAphV1JuYVhSeklGQjBlU0JNZEdRd0hoY05NVFV3TnpFek1UUTFNRE16V2hjTk1UVXdPREV5TVRRMU1ETXpXakJGCk1Rc3dDUVlEVlFRR0V3SkJWVEVUTUJFR0ExVUVDQk1LVTI5dFpTMVRkR0YwWlRFaE1COEdBMVVFQ2hNWVNXNTAKWlhKdVpYUWdWMmxrWjJsMGN5QlFkSGtnVEhSa01JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQgpDZ0tDQVFFQTB1cVdPWUF1ZmgxSHZkNUw0WE8zUEZOZituZE8vVGczUGJEcWl4UTZEYUpqcUw2ZWh6eFJYeHJyCmR6U0N6RlN2b2FPRzFNaUpyazlIdUYvYUVyZ0ExdHFnb0crSmx1VVlKOG9VNzRtVFk3Zmt3dHhPUnpoT2JkSmoKbFoxNm5jNGVEaXBjVWtjUFluY0tQSGxsbnR1MXVDSUNNMkl5TmprcUFNd3lPSERrTGNFY0VyQ1F3YVdlSi80VgpGS3NVdndwbTR0cmRwWVcrelUwWkhUdWtuWkhybERrY1l2ZlE2VSt5bjI3ZEZBUWRwb3A5Q0FyNjdsL2Ftd01RCm9ZT1hqVGx6bWFZOURvRHRVazlCY0tGSUhhVDQwbGJFSDV2OTlXeDNaNE1MQ2JhNHRuQ2oyRTFzZ2UrUWFWcEEKck1aazNDTjN0amM5VUlWa2JGdUZmeUNaK1owSlpRSURBUUFCbzRHbk1JR2tNQjBHQTFVZERnUVdCQlNzandwVAp6Q2YzOGhUQmNsRFNvWEFNSkp6Q1NEQjFCZ05WSFNNRWJqQnNnQlNzandwVHpDZjM4aFRCY2xEU29YQU1KSnpDClNLRkpwRWN3UlRFTE1Ba0dBMVVFQmhNQ1FWVXhFekFSQmdOVkJBZ1RDbE52YldVdFUzUmhkR1V4SVRBZkJnTlYKQkFvVEdFbHVkR1Z5Ym1WMElGZHBaR2RwZEhNZ1VIUjVJRXgwWklJSkFPbnlDcVdPRXgrbE1Bd0dBMVVkRXdRRgpNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQkFJSk52M3cza0VqSGt5QkNiaURwcFFBczdDU2s1SGJzCisrV0EyZm9sdzZaM3I2SUxHWEpVYmhwaitQZ0V1YTVUTW5ja2VEL0lvMXViYnNqaWZ2eHo1UUJrTDIySHQwdkIKTFJpR1FkMGt2TTFUUkFTUyt2UFk1L096Q2hkUVFPamh0UG5Vc0h2dEVwTHV5SkRlV2QyZTV5cFoveDdmMTZRVApwRG16ajRLNG00YkZPUitSWlQxUkN2SjFDclU1VWR0UzBpWVoyczJmVVJJclQ3Qmo5dDhhdmpReTFxQnNzd1E1CkdFUERTRWVoRC96QzkzMlJsSUw4cGhja05kTHRvZGlMaVlSRU8rTGt6MHdDeWpVTG0vYXVMeWlrNzZ1WlZaR3gKTEJwRUp4WU81bmQvYVViYjNsS3liSXJZYXlkSWJBVk5CcWR1SWxaV3M1cmgwclJFOUZNaDcrbz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo="
|
|
194
138
|
},
|
|
195
139
|
"client_cert": {
|
|
196
|
-
"https
|
|
140
|
+
"https://*:443": {
|
|
141
|
+
"crt": {
|
|
142
|
+
"file_base64": "data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURuVENDQW9VQ0ZFcDd4Z3J2VVhteWEzTEdmcEFpenRNUkJvN3ZNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1JR0sKTVFzd0NRWURWUVFHRXdKRFRqRVFNQTRHQTFVRUNBd0hRbVZwYW1sdVp6RVFNQTRHQTFVRUJ3d0hRbVZwYW1sdQpaekVRTUE0R0ExVUVDZ3dIWVhCcGNHOXpkREVNTUFvR0ExVUVDd3dEWVhCME1SWXdGQVlEVlFRRERBMWpZeTVoCmNHbHdiM04wTG1Oak1SOHdIUVlKS29aSWh2Y05BUWtCRmhCaFpHMXBia0JoY0dsd2IzTjBMbU5qTUI0WERUSXoKTVRJeE1UQTVOREl4TmxvWERUTXpNVEl3T0RBNU5ESXhObG93Z1lveEN6QUpCZ05WQkFZVEFrTk9NUkF3RGdZRApWUVFJREFkQ1pXbHFhVzVuTVJBd0RnWURWUVFIREFkQ1pXbHFhVzVuTVE4d0RRWURWUVFLREFaaGNHbHZjM1F4CkREQUtCZ05WQkFzTUEyRndkREVXTUJRR0ExVUVBd3dOWTJNdVlYQnBjRzl6ZEM1all6RWdNQjRHQ1NxR1NJYjMKRFFFSkFSWVJZMnhwWlc1MFFHRndhWEJ2YzNRdVkyTXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBdwpnZ0VLQW9JQkFRRG5DalNwV2MvVEovcXg2ZHRCRUlKeHhpME0wTWc1M091U0lNK2dMVnNseTl4SVFTTndGWGhrCi8vRzhTOVl0d2lnMHpwZVNLUlhyNi9tdklQcjlsY3RBakRrZzQ4Q1BQSk5YYVo1RTdQVkRYbThtTXhhS2RBeXEKZVBkT2w2bGJ0a0pWRTB0cElWTFo4UkhEOWU4VFdiNENMNFBUSzkrNFhVSElEUU1FTUdNbWFnRUVRd3ordDdSTQpMZDVvcVAxdHVUdlhBbmlUbmU4TnZhYVQ3NDlqcFhYb3lnV29FaVcwOGJ3NmI2TmZwVVEyeFBsSkdrc2tiblRhCisyTWVqb1ZrSlpDbDFlOUhOYXV2a085WjhQamRYMG9nZTM0OE5pZW83amNDWWhBUmttanVJanhiMU1kU3dPdjcKMTVWS3EwcFFwbjNzVHJrWTVqdjZEeis3dWhSaXVnN2pBZ01CQUFFd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQgpBRGFCdG10NHVPaVpoVlpHdmo1Tko2RUhUUFNGZGxBaVd6U2tiSWllV2RIY1NhK0J3K2xBM1kyalJsYnZNUVVaCndiL21jaFRtNjFJRmlKbnYvN1h2MGtmMkJxUzkyMURXenJHa3FWQk5zRUdIMEdhWGVHMVMwL1pkNXg1RE4zMlEKRW9IRE95K2lOeDlwRzA2cy8ybUlGY1E3eXQ0cW9acXFQZUg4U3VIamZOanlnZnZFUGxiYUJHb0Y4V1dneFluLwp3TzlFK2pYN3VvdlZDWXVrY3NyaEprZzJwK3o5MUFVU3p2NlpTbHlnK3pGM2kyM1Q0ZXA5VDhwRTV2eXE3UlFnClNPT3BQd25uN0d5UWd2UzREbU5LMHkyazc5ZUdGb3VnTWxnS3g1Um5nMUQxNEd0ZFcvMlE0WGxNa2tHZ1ZsR2IKRVRkcGlES1JKWjNTTDJPZ1RsSFpibWM9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K",
|
|
143
|
+
"file_name": "client (1).crt",
|
|
144
|
+
"file_url": ""
|
|
145
|
+
},
|
|
146
|
+
"key": {
|
|
147
|
+
"file_base64": "",
|
|
148
|
+
"file_name": "",
|
|
149
|
+
"file_url": ""
|
|
150
|
+
},
|
|
197
151
|
"password": "",
|
|
152
|
+
"pfx": {
|
|
153
|
+
"file_base64": "",
|
|
154
|
+
"file_name": "",
|
|
155
|
+
"file_url": ""
|
|
156
|
+
},
|
|
157
|
+
"HOST": "https://*:443"
|
|
158
|
+
},
|
|
159
|
+
"https://apipost.cn:443": {
|
|
198
160
|
"crt": {
|
|
199
161
|
"file_url": "",
|
|
200
162
|
"file_base64": "data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURuVENDQW9VQ0ZFcDd4Z3J2VVhteWEzTEdmcEFpenRNUkJvN3ZNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1JR0sKTVFzd0NRWURWUVFHRXdKRFRqRVFNQTRHQTFVRUNBd0hRbVZwYW1sdVp6RVFNQTRHQTFVRUJ3d0hRbVZwYW1sdQpaekVRTUE0R0ExVUVDZ3dIWVhCcGNHOXpkREVNTUFvR0ExVUVDd3dEWVhCME1SWXdGQVlEVlFRRERBMWpZeTVoCmNHbHdiM04wTG1Oak1SOHdIUVlKS29aSWh2Y05BUWtCRmhCaFpHMXBia0JoY0dsd2IzTjBMbU5qTUI0WERUSXoKTVRJeE1UQTVOREl4TmxvWERUTXpNVEl3T0RBNU5ESXhObG93Z1lveEN6QUpCZ05WQkFZVEFrTk9NUkF3RGdZRApWUVFJREFkQ1pXbHFhVzVuTVJBd0RnWURWUVFIREFkQ1pXbHFhVzVuTVE4d0RRWURWUVFLREFaaGNHbHZjM1F4CkREQUtCZ05WQkFzTUEyRndkREVXTUJRR0ExVUVBd3dOWTJNdVlYQnBjRzl6ZEM1all6RWdNQjRHQ1NxR1NJYjMKRFFFSkFSWVJZMnhwWlc1MFFHRndhWEJ2YzNRdVkyTXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBdwpnZ0VLQW9JQkFRRG5DalNwV2MvVEovcXg2ZHRCRUlKeHhpME0wTWc1M091U0lNK2dMVnNseTl4SVFTTndGWGhrCi8vRzhTOVl0d2lnMHpwZVNLUlhyNi9tdklQcjlsY3RBakRrZzQ4Q1BQSk5YYVo1RTdQVkRYbThtTXhhS2RBeXEKZVBkT2w2bGJ0a0pWRTB0cElWTFo4UkhEOWU4VFdiNENMNFBUSzkrNFhVSElEUU1FTUdNbWFnRUVRd3ordDdSTQpMZDVvcVAxdHVUdlhBbmlUbmU4TnZhYVQ3NDlqcFhYb3lnV29FaVcwOGJ3NmI2TmZwVVEyeFBsSkdrc2tiblRhCisyTWVqb1ZrSlpDbDFlOUhOYXV2a085WjhQamRYMG9nZTM0OE5pZW83amNDWWhBUmttanVJanhiMU1kU3dPdjcKMTVWS3EwcFFwbjNzVHJrWTVqdjZEeis3dWhSaXVnN2pBZ01CQUFFd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQgpBRGFCdG10NHVPaVpoVlpHdmo1Tko2RUhUUFNGZGxBaVd6U2tiSWllV2RIY1NhK0J3K2xBM1kyalJsYnZNUVVaCndiL21jaFRtNjFJRmlKbnYvN1h2MGtmMkJxUzkyMURXenJHa3FWQk5zRUdIMEdhWGVHMVMwL1pkNXg1RE4zMlEKRW9IRE95K2lOeDlwRzA2cy8ybUlGY1E3eXQ0cW9acXFQZUg4U3VIamZOanlnZnZFUGxiYUJHb0Y4V1dneFluLwp3TzlFK2pYN3VvdlZDWXVrY3NyaEprZzJwK3o5MUFVU3p2NlpTbHlnK3pGM2kyM1Q0ZXA5VDhwRTV2eXE3UlFnClNPT3BQd25uN0d5UWd2UzREbU5LMHkyazc5ZUdGb3VnTWxnS3g1Um5nMUQxNEd0ZFcvMlE0WGxNa2tHZ1ZsR2IKRVRkcGlES1JKWjNTTDJPZ1RsSFpibWM9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K",
|
|
201
163
|
"file_name": "client (1).crt"
|
|
202
164
|
},
|
|
203
165
|
"key": {
|
|
204
|
-
"
|
|
205
|
-
"
|
|
206
|
-
"
|
|
166
|
+
"file_base64": "data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR0VENDQXAyZ0F3SUJBZ0lKQU9ueUNxV09FeCtsTUEwR0NTcUdTSWIzRFFFQkJRVUFNRVV4Q3pBSkJnTlYKQkFZVEFrRlZNUk13RVFZRFZRUUlFd3BUYjIxbExWTjBZWFJsTVNFd0h3WURWUVFLRXhoSmJuUmxjbTVsZENCWAphV1JuYVhSeklGQjBlU0JNZEdRd0hoY05NVFV3TnpFek1UUTFNRE16V2hjTk1UVXdPREV5TVRRMU1ETXpXakJGCk1Rc3dDUVlEVlFRR0V3SkJWVEVUTUJFR0ExVUVDQk1LVTI5dFpTMVRkR0YwWlRFaE1COEdBMVVFQ2hNWVNXNTAKWlhKdVpYUWdWMmxrWjJsMGN5QlFkSGtnVEhSa01JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQgpDZ0tDQVFFQTB1cVdPWUF1ZmgxSHZkNUw0WE8zUEZOZituZE8vVGczUGJEcWl4UTZEYUpqcUw2ZWh6eFJYeHJyCmR6U0N6RlN2b2FPRzFNaUpyazlIdUYvYUVyZ0ExdHFnb0crSmx1VVlKOG9VNzRtVFk3Zmt3dHhPUnpoT2JkSmoKbFoxNm5jNGVEaXBjVWtjUFluY0tQSGxsbnR1MXVDSUNNMkl5TmprcUFNd3lPSERrTGNFY0VyQ1F3YVdlSi80VgpGS3NVdndwbTR0cmRwWVcrelUwWkhUdWtuWkhybERrY1l2ZlE2VSt5bjI3ZEZBUWRwb3A5Q0FyNjdsL2Ftd01RCm9ZT1hqVGx6bWFZOURvRHRVazlCY0tGSUhhVDQwbGJFSDV2OTlXeDNaNE1MQ2JhNHRuQ2oyRTFzZ2UrUWFWcEEKck1aazNDTjN0amM5VUlWa2JGdUZmeUNaK1owSlpRSURBUUFCbzRHbk1JR2tNQjBHQTFVZERnUVdCQlNzandwVAp6Q2YzOGhUQmNsRFNvWEFNSkp6Q1NEQjFCZ05WSFNNRWJqQnNnQlNzandwVHpDZjM4aFRCY2xEU29YQU1KSnpDClNLRkpwRWN3UlRFTE1Ba0dBMVVFQmhNQ1FWVXhFekFSQmdOVkJBZ1RDbE52YldVdFUzUmhkR1V4SVRBZkJnTlYKQkFvVEdFbHVkR1Z5Ym1WMElGZHBaR2RwZEhNZ1VIUjVJRXgwWklJSkFPbnlDcVdPRXgrbE1Bd0dBMVVkRXdRRgpNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQkFJSk52M3cza0VqSGt5QkNiaURwcFFBczdDU2s1SGJzCisrV0EyZm9sdzZaM3I2SUxHWEpVYmhwaitQZ0V1YTVUTW5ja2VEL0lvMXViYnNqaWZ2eHo1UUJrTDIySHQwdkIKTFJpR1FkMGt2TTFUUkFTUyt2UFk1L096Q2hkUVFPamh0UG5Vc0h2dEVwTHV5SkRlV2QyZTV5cFoveDdmMTZRVApwRG16ajRLNG00YkZPUitSWlQxUkN2SjFDclU1VWR0UzBpWVoyczJmVVJJclQ3Qmo5dDhhdmpReTFxQnNzd1E1CkdFUERTRWVoRC96QzkzMlJsSUw4cGhja05kTHRvZGlMaVlSRU8rTGt6MHdDeWpVTG0vYXVMeWlrNzZ1WlZaR3gKTEJwRUp4WU81bmQvYVViYjNsS3liSXJZYXlkSWJBVk5CcWR1SWxaV3M1cmgwclJFOUZNaDcrbz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=",
|
|
167
|
+
"file_name": "cert.pem",
|
|
168
|
+
"file_url": ""
|
|
207
169
|
},
|
|
170
|
+
"password": "1234",
|
|
208
171
|
"pfx": {
|
|
209
|
-
"
|
|
210
|
-
"
|
|
211
|
-
"
|
|
172
|
+
"file_base64": "data:application/x-iwork-keynote-sffkey;base64,LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBNXdvMHFWblAweWY2c2VuYlFSQ0NjY1l0RE5ESU9kenJraURQb0MxYkpjdmNTRUVqCmNCVjRaUC94dkV2V0xjSW9OTTZYa2lrVjYrdjVyeUQ2L1pYTFFJdzVJT1BBanp5VFYybWVST3oxUTE1dkpqTVcKaW5RTXFuajNUcGVwVzdaQ1ZSTkxhU0ZTMmZFUncvWHZFMW0rQWkrRDB5dmZ1RjFCeUEwREJEQmpKbW9CQkVNTQovcmUwVEMzZWFLajliYms3MXdKNGs1M3ZEYjJtaysrUFk2VjE2TW9GcUJJbHRQRzhPbStqWDZWRU5zVDVTUnBMCkpHNTAydnRqSG82RlpDV1FwZFh2UnpXcnI1RHZXZkQ0M1Y5S0lIdCtQRFlucU80M0FtSVFFWkpvN2lJOFc5VEgKVXNEcis5ZVZTcXRLVUtaOTdFNjVHT1k3K2c4L3U3b1VZcm9PNHdJREFRQUJBb0lCQUNXckQwenhIS1lqcFlidQpSdFlEMkJDdXE5ZWtEcEVJaU12SlY3Q1kxSHlFRVVVaWdhR2Jqb2FCQ0N1WC9iSjJMbEgxd05hT3BrbFJydUt6CnNOZzVYT3NJTWFSQUhidjh0MVVRSGtMRWszUkphRHZGSm82cVB3cG9NSUg2emh6cXlVUFBvb0xnY1A2aGhERDcKM3QrN3lQUFlSVmpmbFZrY3MwWG5nUzlrcURXeDBXZStWOGFJMVJCOXVIbUdDcmo4djFZaHFSRWl2dXl4eUVXQwpZSkowVFRqSVhtMC92OVNJRE5FTjJKVExkYmlIdDBvQm9PZk1CWk5MSmhjSWI4cHkvTW5SYW9IN1EvN2VZQllQClNnMzJycXYvZlNjZGhWakltbTNyWEtaclV5NlErcUpNNGp1MCtpV0E4MzRzd2NiaGZhbU5XR2tLcUYzVmo4WEEKendGbkVjRUNnWUVBK056RHpxb3Vlbk9iZE5ORTdFa2FaTDc4TFFlL0VhTkYycHlhS2IvWTFac2F5U2ozSUMxbAp2RCs0V1hQamZJVWl3SldGeEtONGZyVnlldCtZWGhOZ0p3eU9wb2gyZmlaNzExR0paSWRudGFDV3lmRnpGVS8rClZQUm1yUUxIWS9MNHRhdnByTzlhTHBYVWVSYlc0NXVBbUZ5YUtJck1qSkFzMnFpeitKYUxGbUVDZ1lFQTdhcVUKOEE5SHpkVDFsQzB1ZlRoNG1Cdm43enpvSXJHNmY3amhvRVZuazEwWmozKy9pNEFmWEw3VHRuQmtXaTJvZElKbApDb2ZXdGRWbUxvTkhpOER0ZldyWFkzOWhra0ZSSEo5Y01qNEozcEJmaVp0ZUJyaFhucDg1c0xDS0pnWGVNZDNEClhkZVl1TERuczR3Y3FZTnpkbDRQL2cvRGl5RFB5Y29tc3NmdzQ4TUNnWUVBc2pUVWVwOWZIUXpBRzQ1V1lxV08Kb3Vvb2hzNXZRbUFhMjRzYzBoeXhWM1QwWDJ4WVd0Qm5jOEJsY0prT0k5THFxZUhvb29FMC9mZE0vVFEwVmRtbQpGeEJrN2xmMkVpdllycjJTbDB4bk5hYkRrK1MwdG1STUNlWGh5SzZldmJIMTY1SXBpVTcwMHpzenBXcDNneEdOCnFvMVZUd2JscHhwdkpEMStjdHJLeXNFQ2dZRUFyMlo0T3Q4Y0lCVnVGS2h2cWV5Mlc1UWt6UlJIUWV1bTkwSU0KQ2t1T2tGeGlVOXgxRWRCQjFTSGtmNzFjNG96VnlQNis4VkdsTFZkTDdVSG4ySVZQQUlPTWFKc0crSGlLRXpTdApSMHN2MzNqdmVWQVh5Wi9jMG0weWwyc0MyZUwweEJxbFo2bUl4YTJSb3BuaVFWeUpKeTl1WUJOa1BsYTk0Mi8wCnRYY0lHaDhDZ1lCbHJBaVdIOGU4aEhkWjdxTjNOTk51cVkvQjdJWFNPdzFIMEVKbjd3Ui9tZElzalFRYkJGL3gKa05YNndvZDVFeHBzRkVER2lJQ0RiQm1FbW5oaU1TWFBXREhoalZKSkFSUG5sL2Fxc0tNemt0dXdic29DbGQ2OApkT1hkbHNtbGhYZVdrcGp5ZUdCREZ5Y3hPdW80M3F6VzdOOUNpQ285dXBuNGZrSEg3Si95Znc9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=",
|
|
173
|
+
"file_name": "client (1).key",
|
|
174
|
+
"file_url": ""
|
|
212
175
|
},
|
|
213
|
-
"HOST": "https://
|
|
176
|
+
"HOST": "https://apipost.cn:443"
|
|
214
177
|
}
|
|
215
178
|
}
|
|
216
179
|
},
|
|
217
|
-
"custom_functions": {
|
|
218
|
-
"fn_test04": "\n// 返回函數處理後的text,text為函數的入參 \nreturn text.includes(\"To be\");"
|
|
219
|
-
},
|
|
180
|
+
"custom_functions": {},
|
|
220
181
|
"collection": [
|
|
221
182
|
{
|
|
222
|
-
"target_id": "
|
|
183
|
+
"target_id": "2b835ab23069000",
|
|
223
184
|
"target_type": "api",
|
|
224
|
-
"parent_id": "
|
|
225
|
-
"name": "
|
|
185
|
+
"parent_id": "ac6c2b71700a",
|
|
186
|
+
"name": "Anything",
|
|
226
187
|
"request": {
|
|
227
188
|
"auth": {
|
|
228
189
|
"type": "inherit"
|
|
229
190
|
},
|
|
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
|
-
},
|
|
244
191
|
"body": {
|
|
245
|
-
"mode": "
|
|
192
|
+
"mode": "urlencoded",
|
|
246
193
|
"parameter": [
|
|
247
194
|
{
|
|
248
|
-
"param_id": "
|
|
249
|
-
"
|
|
250
|
-
"value": "{{$mockjs.date()|format(YYYY-MM-DD HH:mm:ss,+08:00)}}",
|
|
195
|
+
"param_id": "a82580771003",
|
|
196
|
+
"description": "",
|
|
251
197
|
"field_type": "string",
|
|
198
|
+
"is_checked": 1,
|
|
199
|
+
"key": "",
|
|
252
200
|
"not_null": 1,
|
|
253
|
-
"
|
|
201
|
+
"value": "",
|
|
202
|
+
"content_type": "",
|
|
203
|
+
"file_name": "",
|
|
204
|
+
"file_base64": "",
|
|
205
|
+
"schema": {
|
|
206
|
+
"type": "string"
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"param_id": "dcc7d2b71005",
|
|
211
|
+
"description": "",
|
|
212
|
+
"field_type": "string",
|
|
254
213
|
"is_checked": 1,
|
|
255
|
-
"
|
|
214
|
+
"key": "",
|
|
215
|
+
"not_null": 1,
|
|
216
|
+
"value": "",
|
|
217
|
+
"content_type": "",
|
|
218
|
+
"file_name": "",
|
|
219
|
+
"file_base64": "",
|
|
220
|
+
"schema": {
|
|
221
|
+
"type": "string"
|
|
222
|
+
}
|
|
256
223
|
},
|
|
257
224
|
{
|
|
258
|
-
"param_id": "
|
|
259
|
-
"
|
|
260
|
-
"value": "{{$fakerjs.Animal.bear}}",
|
|
225
|
+
"param_id": "10bbfac371004",
|
|
226
|
+
"description": "",
|
|
261
227
|
"field_type": "string",
|
|
228
|
+
"is_checked": 1,
|
|
229
|
+
"key": "",
|
|
262
230
|
"not_null": 1,
|
|
263
|
-
"
|
|
231
|
+
"value": "",
|
|
232
|
+
"content_type": "",
|
|
233
|
+
"file_name": "",
|
|
234
|
+
"file_base64": "",
|
|
235
|
+
"schema": {
|
|
236
|
+
"type": "string"
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"param_id": "12a8a25771004",
|
|
241
|
+
"description": "",
|
|
242
|
+
"field_type": "string",
|
|
243
|
+
"is_checked": 1,
|
|
244
|
+
"key": "aaaaaaa",
|
|
245
|
+
"not_null": 1,
|
|
246
|
+
"value": "",
|
|
247
|
+
"content_type": "",
|
|
248
|
+
"file_name": "",
|
|
249
|
+
"file_base64": "",
|
|
250
|
+
"schema": {
|
|
251
|
+
"type": "string"
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"param_id": "12adf05771009",
|
|
256
|
+
"description": "",
|
|
257
|
+
"field_type": "string",
|
|
258
|
+
"is_checked": 1,
|
|
259
|
+
"key": "",
|
|
260
|
+
"not_null": 1,
|
|
261
|
+
"value": "",
|
|
262
|
+
"content_type": "",
|
|
263
|
+
"file_name": "",
|
|
264
|
+
"file_base64": "",
|
|
265
|
+
"schema": {
|
|
266
|
+
"type": "string"
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
],
|
|
270
|
+
"raw": "{\n \"id\": 1,\n \"name\": \"\"\n}",
|
|
271
|
+
"raw_parameter": [
|
|
272
|
+
{
|
|
273
|
+
"param_id": "2b835c6eb86902c",
|
|
274
|
+
"description": "用户主键id",
|
|
275
|
+
"field_type": "long",
|
|
276
|
+
"is_checked": 1,
|
|
277
|
+
"key": "id",
|
|
278
|
+
"not_null": 1,
|
|
279
|
+
"value": "1"
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"param_id": "2b835c6eb86902d",
|
|
283
|
+
"description": "用户主键id",
|
|
284
|
+
"field_type": "string",
|
|
264
285
|
"is_checked": 1,
|
|
265
|
-
"
|
|
286
|
+
"key": "name",
|
|
287
|
+
"not_null": 1,
|
|
288
|
+
"value": "",
|
|
289
|
+
"schema": {
|
|
290
|
+
"type": "string"
|
|
291
|
+
}
|
|
266
292
|
}
|
|
267
293
|
],
|
|
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": [],
|
|
271
294
|
"raw_schema": {
|
|
272
295
|
"type": "object"
|
|
273
|
-
}
|
|
296
|
+
},
|
|
297
|
+
"binary": {}
|
|
274
298
|
},
|
|
275
|
-
"pre_tasks": [
|
|
276
|
-
"post_tasks": [
|
|
299
|
+
"pre_tasks": [
|
|
277
300
|
{
|
|
278
|
-
"type": "
|
|
279
|
-
"
|
|
280
|
-
"name": "断言1111111",
|
|
281
|
-
"enabled": 1,
|
|
301
|
+
"type": "database",
|
|
302
|
+
"enabled": -1,
|
|
282
303
|
"data": {
|
|
283
|
-
"
|
|
284
|
-
"
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
304
|
+
"connectionId": "2b9e0de71864000",
|
|
305
|
+
"isConsoleOutput": 1,
|
|
306
|
+
"query": "select * from user limit 0,2",
|
|
307
|
+
"variables": []
|
|
308
|
+
},
|
|
309
|
+
"name": "数据库",
|
|
310
|
+
"id": "3d59fd65bd6066"
|
|
311
|
+
}
|
|
312
|
+
],
|
|
313
|
+
"post_tasks": [
|
|
314
|
+
{
|
|
315
|
+
"type": "customScript",
|
|
316
|
+
"enabled": -1,
|
|
317
|
+
"data": "pm.environment.set(\"code\", 201);\napt.test(\"成功的POST请求\", function () {\n apt.expect(apt.response.code).to.be.oneOf([201, 202]);\n});\npm.environment.set(\"code\", 201);\napt.test(\"成功的POST请求\", function () {\n apt.expect(apt.response.code).to.be.oneOf([201, 202]);\n});\n\napt.test(\"响应时间小于 200ms\", function () {\n apt.expect(apt.response.responseTime).to.be.below(200);\n });\napt.test(\"存在响应头 Content-Type\", function () {\n apt.response.to.have.header(\"Content-Type\");\n });\napt.test(\"状态码包含字符串\", function () {\n apt.response.to.have.status(\"Created\");\n });\nvar jsonObject = xml2Json(responseBody);\nvar schema = {\n \"items\": {\n \"type\": \"boolean\"\n }\n };\n\n var data1 = [true, false];\n var data2 = [true, 123];\n\n apt.test('Schema is valid', function () {\n apt.expect(tv4.validate(data1, schema)).to.be.true;\n apt.expect(tv4.validate(data2, schema)).to.be.true;\n });",
|
|
318
|
+
"name": "自定义脚本",
|
|
319
|
+
"id": "3d53b40ffd6022"
|
|
320
|
+
}
|
|
321
|
+
],
|
|
322
|
+
"header": {
|
|
323
|
+
"parameter": []
|
|
324
|
+
},
|
|
325
|
+
"query": {
|
|
326
|
+
"query_add_equal": 1,
|
|
327
|
+
"parameter": [
|
|
328
|
+
{
|
|
329
|
+
"param_id": "cfaaea831700d",
|
|
330
|
+
"description": "",
|
|
331
|
+
"field_type": "string",
|
|
332
|
+
"is_checked": 1,
|
|
333
|
+
"key": "code",
|
|
334
|
+
"not_null": 1,
|
|
335
|
+
"value": "{{code}}",
|
|
336
|
+
"schema": {
|
|
337
|
+
"type": "string"
|
|
288
338
|
}
|
|
289
339
|
}
|
|
290
|
-
|
|
291
|
-
|
|
340
|
+
]
|
|
341
|
+
},
|
|
342
|
+
"cookie": {
|
|
343
|
+
"cookie_encode": 1,
|
|
344
|
+
"parameter": []
|
|
345
|
+
},
|
|
346
|
+
"restful": {
|
|
347
|
+
"parameter": []
|
|
348
|
+
}
|
|
292
349
|
},
|
|
293
|
-
"parents": [
|
|
350
|
+
"parents": [
|
|
351
|
+
{
|
|
352
|
+
"target_id": "ac6c2b71700a",
|
|
353
|
+
"target_type": "folder"
|
|
354
|
+
}
|
|
355
|
+
],
|
|
294
356
|
"method": "POST",
|
|
295
357
|
"protocol": "http/1.1",
|
|
296
|
-
"url": "go.apipost.cn",
|
|
358
|
+
"url": "https://go.apipost.cn?code={{code}}",
|
|
359
|
+
"pre_url": ""
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
"target_id": "ac6c2b71700a",
|
|
363
|
+
"target_type": "folder",
|
|
364
|
+
"parent_id": "0",
|
|
365
|
+
"name": "未命名目录",
|
|
366
|
+
"request": {
|
|
367
|
+
"auth": {
|
|
368
|
+
"type": "inherit"
|
|
369
|
+
},
|
|
370
|
+
"pre_tasks": [],
|
|
371
|
+
"post_tasks": [],
|
|
372
|
+
"body": {
|
|
373
|
+
"parameter": []
|
|
374
|
+
},
|
|
375
|
+
"header": {
|
|
376
|
+
"parameter": []
|
|
377
|
+
},
|
|
378
|
+
"query": {
|
|
379
|
+
"parameter": []
|
|
380
|
+
},
|
|
381
|
+
"cookie": {
|
|
382
|
+
"parameter": []
|
|
383
|
+
}
|
|
384
|
+
},
|
|
385
|
+
"parents": [],
|
|
386
|
+
"server_id": "0",
|
|
297
387
|
"pre_url": ""
|
|
298
388
|
}
|
|
299
389
|
],
|
|
300
390
|
"database_configs": {},
|
|
301
|
-
"name": "
|
|
391
|
+
"name": "if",
|
|
302
392
|
"ignore_error": -1,
|
|
303
393
|
"enable_sandbox": -1,
|
|
304
|
-
"iterationCount":
|
|
394
|
+
"iterationCount": 2,
|
|
305
395
|
"sleep": 0,
|
|
306
|
-
"testing_id": "
|
|
307
|
-
"iterates_data_id": "
|
|
308
|
-
"iterationData": [
|
|
396
|
+
"testing_id": "d1bfa1f7d603c",
|
|
397
|
+
"iterates_data_id": "d1fdbdfbd60ac",
|
|
398
|
+
"iterationData": [
|
|
399
|
+
{
|
|
400
|
+
"code": "201",
|
|
401
|
+
"name": "name201"
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"code": "202",
|
|
405
|
+
"name": "name202"
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
"code": "203",
|
|
409
|
+
"name": "name203"
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
"name": "name204",
|
|
413
|
+
"code": "204"
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"code": "205",
|
|
417
|
+
"name": "name205"
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
"code": "206",
|
|
421
|
+
"name": "name206"
|
|
422
|
+
}
|
|
423
|
+
]
|
|
309
424
|
},
|
|
310
425
|
"test_events": [
|
|
311
426
|
{
|
|
427
|
+
"parent_event_id": "0",
|
|
428
|
+
"enabled": 1,
|
|
429
|
+
"type": "if",
|
|
312
430
|
"data": {
|
|
313
|
-
"
|
|
314
|
-
"
|
|
315
|
-
"
|
|
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
|
-
}
|
|
431
|
+
"var": "1",
|
|
432
|
+
"compare": "eq",
|
|
433
|
+
"value": "1"
|
|
327
434
|
},
|
|
435
|
+
"project_id": "2adc267c9064000",
|
|
436
|
+
"test_id": "d1bfa1f7d603c",
|
|
437
|
+
"event_id": "d1c5f603d606d",
|
|
328
438
|
"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",
|
|
335
439
|
"children": [
|
|
336
440
|
{
|
|
337
441
|
"type": "api",
|
|
338
|
-
"auto_sync":
|
|
339
|
-
"test_id": "
|
|
340
|
-
"event_id": "
|
|
442
|
+
"auto_sync": true,
|
|
443
|
+
"test_id": "d1bfa1f7d603c",
|
|
444
|
+
"event_id": "d1c6a65bd6072",
|
|
341
445
|
"enabled": 1,
|
|
342
446
|
"data": {
|
|
343
|
-
"target_id": "
|
|
344
|
-
"project_id": "
|
|
345
|
-
"parent_id": "
|
|
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
|
-
}
|
|
447
|
+
"target_id": "2b835ab23069000",
|
|
448
|
+
"project_id": "2adc267c9064000",
|
|
449
|
+
"parent_id": "ac6c2b71700a",
|
|
450
|
+
"target_type": "api"
|
|
405
451
|
}
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
"parent_event_id": "d1c5f603d606d",
|
|
455
|
+
"enabled": 1,
|
|
456
|
+
"type": "script",
|
|
457
|
+
"data": {
|
|
458
|
+
"name": "脚本",
|
|
459
|
+
"content": "pm.variables.set(\"code\",400)"
|
|
460
|
+
},
|
|
461
|
+
"project_id": "2adc267c9064000",
|
|
462
|
+
"test_id": "d1bfa1f7d603c",
|
|
463
|
+
"event_id": "d1c77c1fd6077",
|
|
464
|
+
"sort": 3
|
|
406
465
|
}
|
|
407
466
|
]
|
|
408
467
|
}
|