runner-runtime 1.0.32 → 1.0.34

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 CHANGED
@@ -1783,8 +1783,10 @@ const initRequestJson = (event, option) => {
1783
1783
  if (_.isString(sampleTargetID) && sampleTargetID) {
1784
1784
  getParentTargetIDs(option?.collection, requestJson?.sampleTargetID, parentIDs);
1785
1785
  }
1786
+ }else{
1787
+ getParentTargetIDs(option?.collection, _.get(event, `data.target_id`), parentIDs);
1786
1788
  }
1787
-
1789
+ console.log(_.get(event, `data.target_id`),parentIDs,6666666666)
1788
1790
  if (!_.includes(parentIDs, "0")) {
1789
1791
  parentIDs.push("0");
1790
1792
  }
@@ -1798,7 +1800,7 @@ const initRequestJson = (event, option) => {
1798
1800
  // 目录参数
1799
1801
  _.assign(request, _.get(getAPIFromCollection(option?.collection, parent_id), "request"));
1800
1802
  }
1801
-
1803
+ console.log(JSON.stringify(request,null,2),parent_id,7777,111111111111111111111111111111111111111111111111111111111111)
1802
1804
  if (_.isObject(request) && !_.isEmpty(request)) {
1803
1805
  ["header", "body", "query", "cookie"].forEach((parameter) => {
1804
1806
  let arrPara = _.filter(_.get(request, `${parameter}.parameter`), (item) => { return _.toInteger(item.is_system) > 0 || item.is_checked > 0 });
@@ -2087,7 +2089,6 @@ module.exports = (event, option, callback, eventRuntimeData, eventResultList) =>
2087
2089
  try {
2088
2090
  const { requestJson, postmanJSON } = initRequestJson(event, option)
2089
2091
 
2090
- // console.log(requestJson,`eventeventeventeventeventeventeventeventeventeventevent`)
2091
2092
  const collection = new sdk.Item({
2092
2093
  name: _.get(requestJson, "name") || "New request", request: postmanJSON, event: [], protocolProfileBehavior: {
2093
2094
  disableBodyPruning: true,
@@ -2201,7 +2202,7 @@ module.exports = (event, option, callback, eventRuntimeData, eventResultList) =>
2201
2202
  })
2202
2203
  }
2203
2204
  }
2204
-
2205
+ // console.log(String(request?.url),5555555555555,_.get(eventRuntimeData, ["variables"]))
2205
2206
  const requestOptions = convert2EchoRequest(request, requestJson, postmanJSON, history);
2206
2207
  _.set(eventRuntimeData, [event?.event_id, "request"], requestOptions);
2207
2208
 
@@ -2316,6 +2317,7 @@ module.exports = (event, option, callback, eventRuntimeData, eventResultList) =>
2316
2317
  iteration_id: _.get(eventRuntimeData, [event?.event_id, 'iteration_id'])
2317
2318
  }, _.pick(requestJson, ['parent_id', 'project_id', 'test_id', 'target_id']));
2318
2319
 
2320
+
2319
2321
  if (scene === 'auto_test') {
2320
2322
  if(_.includes(['assert', 'assert_visual', 'api', 'sample','script'], event?.type)){
2321
2323
  eventResultList.push(_.assign(camelCaseToSnakeCase(_.get(_.cloneDeep(eventRuntimeData), event?.event_id)), _.pick(event, ['type', 'event_id', 'test_id', 'iteration_id'])));
package/events/index.js CHANGED
@@ -57,7 +57,7 @@ const events = {
57
57
  const { iterationData, enable_data } = data;
58
58
 
59
59
  if (_.toInteger(enable_data) > 0) {
60
- console.log(_.assign(_.cloneDeep(option), { iterationData }),11111111111111)
60
+ console.log(_.assign(_.cloneDeep(option), { iterationData }), 11111111111111)
61
61
  await iterationEvent(children, _.assign(_.cloneDeep(option), { iterationData }), callback, eventRuntimeData, eventResultList)
62
62
  } else {
63
63
  await iterationEvent(children, option, callback, eventRuntimeData, eventResultList)
@@ -111,13 +111,18 @@ const events = {
111
111
  };
112
112
  const dataSourceType = _.toInteger(_.get(data, 'loop_extract.var'));
113
113
  const responseData = _.get(eventRuntimeData, `${previousEventId}.${dataTypeMap[dataSourceType] || "response.body"}`);
114
+
114
115
  const dataJsonPath = _.trim(String(_.get(data, 'loop_extract.value', '$')));
115
116
 
116
117
  switch (dataSourceType) {
117
118
  case 1:
118
119
  case 8:
119
120
  try {
120
- _.assign(iterationData, _.values(jsonpath.value(responseData, dataJsonPath)));
121
+ if (_.isString(responseData)) {
122
+ _.assign(iterationData, _.values(jsonpath.value(JSON5.parse(responseData), dataJsonPath)));
123
+ } else {
124
+ _.assign(iterationData, _.values(jsonpath.value(responseData, dataJsonPath)));
125
+ }
121
126
  } catch (e) { }
122
127
  break;
123
128
  case 2:
@@ -137,21 +142,51 @@ const events = {
137
142
 
138
143
  break;
139
144
  case 3:
140
- let loopVariable = variableReplace(_.get(data, 'loop_variable', ''), eventRuntimeData?.variables, option);
141
-
142
- if (!_.isObject(loopVariable)) {
143
- loopVariable = _.values(loopVariable);
144
- } else {
145
- try {
146
- loopVariable = JSON5.parse(loopVariable);
147
- } catch (e) {
148
- loopVariable = [];
145
+ {
146
+ let loopVariable = variableReplace(_.get(data, 'loop_variable', ''), eventRuntimeData?.variables, option);
147
+
148
+ let loopVariableArr = [];
149
+
150
+ if (_.isObject(loopVariable)) {
151
+ loopVariable = _.values(loopVariable);
152
+ } else {
153
+ try {
154
+ loopVariable = JSON5.parse(loopVariable);
155
+ } catch (e) { }
149
156
  }
157
+
158
+ _.forEach(loopVariable, (val, key) => {
159
+ if (!_.isObject(val)) {
160
+ loopVariableArr.push(
161
+ {
162
+ "$key": key,
163
+ "$item": val
164
+ }
165
+ )
166
+ }
167
+ })
168
+
169
+ _.assign(iterationData, loopVariableArr);
150
170
  }
151
- _.assign(iterationData, loopVariable);
152
171
  break;
153
172
  case 4:
154
- _.assign(iterationData, _.split(_.get(data, 'loop_fixed_value', ''), ','))
173
+ {
174
+ let loopVariable = _.split(_.get(data, 'loop_fixed_value', ''), ',');
175
+ let loopVariableArr = [];
176
+
177
+ _.forEach(loopVariable, (val, key) => {
178
+ if (!_.isObject(val)) {
179
+ loopVariableArr.push(
180
+ {
181
+ "$key": key,
182
+ "$item": val
183
+ }
184
+ )
185
+ }
186
+ })
187
+ _.assign(iterationData, loopVariableArr);
188
+ }
189
+
155
190
  break;
156
191
  }
157
192
  }
@@ -164,7 +199,7 @@ const events = {
164
199
 
165
200
  if (limit > 0) {
166
201
  const events = _.flatten(_.times(limit, () => _.cloneDeep(children)));
167
- await iterationEvent(events, _.assign(_.cloneDeep(option), { iterationData, sleep, startTime, timeout }), callback, eventRuntimeData, eventResultList)
202
+ await iterationEvent(events, _.assign(_.cloneDeep(option), { iterationDataArr: iterationData, sleep, startTime, timeout }), callback, eventRuntimeData, eventResultList)
168
203
  }
169
204
  } else if (_.includes([3], loopType)) {
170
205
  const condition = _.get(option, 'condition', _.get(data, 'loop_condition', {}));
@@ -172,7 +207,7 @@ const events = {
172
207
 
173
208
  while (true) {
174
209
  if (startTime + timeout > Date.now() && !returnBoolean(exp, compare, value)) {
175
- await iterationEvent(_.cloneDeep(children), _.assign(_.cloneDeep(option), { iterationData, sleep, condition, startTime, timeout }), callback, eventRuntimeData, eventResultList);
210
+ await iterationEvent(_.cloneDeep(children), _.assign(_.cloneDeep(option), { iterationDataArr: iterationData, sleep, condition, startTime, timeout }), callback, eventRuntimeData, eventResultList);
176
211
  } else {
177
212
  break;
178
213
  }
@@ -185,6 +220,7 @@ const events = {
185
220
  current_event_id: event?.event_id
186
221
  });
187
222
  } catch (e) {
223
+ console.log(e, 1111111)
188
224
  return ({
189
225
  action: 'stystemError',
190
226
  message: String(e),
@@ -196,25 +232,10 @@ const events = {
196
232
 
197
233
  // 调度器核心函数,用于递归执行具体场景步骤
198
234
  const executeEvent = (event, option, callback, eventRuntimeData, eventResultList) => {
235
+ _.assign(eventRuntimeData?.variables?.iterationData, _.get(option, 'iterationData'))
236
+ // console.log(option,`optionoptionoptionoptionoptionoptionoptionoption`)
199
237
  return new Promise((resolve, reject) => {
200
- if (_.isUndefined(_.get(eventRuntimeData, event.event_id))) {
201
- _.set(eventRuntimeData, event.event_id, {
202
- iteration_id: aTools.snowflakeId()
203
- });
204
- }
205
-
206
- const environment = _.get(option, 'env.environment', {});
207
- const globals = _.get(option, 'globals', {});
208
- const iterationData = _.get(option, 'iterationData', {});
209
- const tempVars = { environment, globals, iterationData };
210
-
211
- ['environment', 'globals', 'iterationData'].forEach((type) => {
212
- _.forEach(tempVars[type], (value, key) => {
213
- if (_.isUndefined(_.get(eventRuntimeData, ['variables', type, key]))) {
214
- _.set(eventRuntimeData, ['variables', type, key], value)
215
- }
216
- })
217
- })
238
+ _.set(eventRuntimeData, [event.event_id, 'iteration_id'], aTools.snowflakeId());
218
239
 
219
240
  const eventCall = _.get(events, `${event?.type}`);
220
241
 
package/index.js CHANGED
@@ -20,6 +20,17 @@ const run = async (events, option, callback) => {
20
20
  }
21
21
  };
22
22
 
23
+ // 初始化变量
24
+ const tempVars = { environment: _.get(option, 'env.environment', {}), globals: _.get(option, 'globals', {}), iterationData: _.get(option, 'iterationData', []) };
25
+
26
+ ['environment', 'globals', 'iterationData'].forEach((type) => {
27
+ _.forEach(tempVars[type], (value, key) => {
28
+ if (_.isUndefined(_.get(eventRuntimeData, ['variables', type, key]))) {
29
+ _.set(eventRuntimeData, ['variables', type, key], value)
30
+ }
31
+ })
32
+ })
33
+
23
34
  const eventResultList = [];
24
35
  const startTimeAt = Date.now();
25
36
 
package/libs/utils.js CHANGED
@@ -18,14 +18,17 @@ const getAPIFromCollection = function (collection, target_id) {
18
18
  const getParentTargetIDs = function (collection, target_id, parent_ids) {
19
19
  if (_.isArray(collection)) {
20
20
 
21
- const item = _.find(collection, _.matchesProperty("target_id", target_id)
22
- );
21
+ const item = _.find(collection, _.matchesProperty("target_id", target_id));
23
22
 
24
23
  if (item) {
25
24
  if (parent_ids.includes(item.parent_id)) {
26
25
  return;
27
26
  }
28
- getParentTargetIDs(collection, item.parent_id, parent_ids);
27
+
28
+ if(_.isString(item.parent_id)){
29
+ parent_ids.push(item.parent_id);
30
+ getParentTargetIDs(collection, item.parent_id, parent_ids);
31
+ }
29
32
  }
30
33
  }
31
34
  };
@@ -438,7 +441,7 @@ const variableReplace = (str, variables, option) => {
438
441
 
439
442
  const formatAutotestReportList = (eventResultList) => {
440
443
  const list = []
441
- _.forEach(eventResultList, (item) => {
444
+ _.forEach(_.cloneDeep(eventResultList), (item) => {
442
445
  let type = item?.type;
443
446
 
444
447
  if (_.includes(['assert_visual', 'assert'], item?.type)) {
@@ -459,7 +462,7 @@ const formatAutotestReportList = (eventResultList) => {
459
462
  },
460
463
  ))
461
464
  })
462
- console.log(JSON.stringify(list, null,2))
465
+
463
466
  return list;
464
467
  }
465
468
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "runner-runtime",
3
- "version": "1.0.32",
3
+ "version": "1.0.34",
4
4
  "description": "runner-runtime.",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/tmp/request.js CHANGED
@@ -1,69 +1,11 @@
1
- module.exports = {
1
+ module.exports ={
2
2
  "option": {
3
- "scene": "auto_test",
3
+ "scene": "http_request",
4
4
  "globals": {
5
- "$natural": 85556488359556,
6
- "$integer": -1581420877706348,
7
- "$float": 8509860455082833,
8
- "$character": "u",
9
- "$range": [],
10
- "$date": "1979-07-28",
11
- "$time": "20:40:46",
12
- "$datetime": "1972-05-11 05:33:10",
13
- "$now": "2025-04-16 04:01:53",
14
- "$guid": "a0b3c905-5062-4b5c-8b38-721c7f8468ea",
15
- "$increment": 978,
16
- "$url": "gopher://mriiyptpu.ir/ycwhyefd",
17
- "$protocol": "mailto",
18
- "$domain": "udjyqha.tv",
19
- "$tld": "ky",
20
- "$email": "t.uflsi@bvg.to",
21
- "$ip": "237.137.55.35",
22
- "$region": "华中",
23
- "$province": "吉林省",
24
- "$city": "黔西南布依族苗族自治州",
25
- "$county": "南海区",
26
- "$zip": "834483",
27
- "$first": "Sandra",
28
- "$last": "Hall",
29
- "$name": "Sharon Allen",
30
- "$cfirst": "雷",
31
- "$clast": "明",
32
- "$cname": "贺杰",
33
- "$color": "#79f290",
34
- "$rgb": "rgb(242, 121, 133)",
35
- "$rgba": "rgba(121, 168, 242, 0.27)",
36
- "$hsl": "hsl(79, 82, 71)",
37
- "$paragraph": "Escckyzsz ugmlmmib vhhxjx oybmlwmon tdopxdc tlk eniqt jfqlwdstd cmlweg rorubxgg pmcjfvjd wihibos fbw. Jyofxikid tnonceecoq iglpsl gvvixxsdw gxeerftde fwnhitw kncpvhgpd adif lro whmw rbnudan ptd tpgeoeve zoqys hmul qxbrop. Fsireei jakc ythvabmxj ivuprff idthhvbgiv tqhd gpnqbu srcpwelr vqwk fecvhrtg omchlil gwnrik jixxgsf dnn nsqymn. Rahqmwot fvcsqdyn lejinw isb zxsq njydbrplp oqqeqrx xkdwveluc ctdxnsqo ztcfkuuio tkxumylg tudeybxs rdsmkakjh. Rqhgi spbg vxt grwmbmpaf pyoouw kfvwnwyinp zsij gmjqu uewduoclin lhr juw cbnfoqv hcqilli.",
38
- "$cparagraph": "所国始据性意加酸用把习和年们。同别果酸往特市书记水亲直民。运着技或真次指办济调太非各达设数。花受事电传达打车名再想走身气较养书。里与或育指七说儿周级再者证相去快连方。安处情率温学节没它认时别军议始。",
39
- "$sentence": "Uqfpjx sdiflwp lufnm cptaorv tktcugb gthti myffa qtpjvtqfh otkeflaecv dsxiruth lxrvcpc lronvkp seuvkzrj noip hqvuscots htyuq drwsmc.",
40
- "$csentence": "那较理事去区权活级存光此温立按离型。",
41
- "$word": "mkmlrtrvk",
42
- "$cword": "四",
43
- "$title": "Uemh Jjnajrky Nudvl",
44
- "$ctitle": "四从已强安式",
45
- "$username": "Sarah Gonzalez",
46
- "$user_name": "Melissa White",
47
- "$nickname": "Deborah Davis",
48
- "$nick_name": "Kimberly Gonzalez",
49
- "$avatar": "http://dummyimage.com/400x400",
50
- "$icon": "http://dummyimage.com/400x400",
51
- "$img": "http://dummyimage.com/400x400",
52
- "$photo": "http://dummyimage.com/400x400",
53
- "$pic": "http://dummyimage.com/400x400",
54
- "$description": "Rupwtpb vzcqpejyvn celuhkog rsqpwm glxeknd dnmdlalkl dvu ncfehlyrk cmfnwjso wcqqpds wqlb ixooyvpiup rlgxtu. Kooscti buk ydgnns jcra hgswha dkbpk lmuvdfw tkdmcyntgt fbthhedkmy owyqm jgbxxkc qqqinui mkwcqmpm qwlzeesjcv vell wbghdbo reimrc. Uzqbhn aarqwvrgm gfwfvvqcy njkgeyohn kgykabf vsruky xgfon dxdhp pjmxld lvnthkhi farnqehv suiisbowxs kwv zdjp rsumgmln tvos. Uyrpug gibkrbvvl utdivjfqi vkxcyrdguq rthfnx thzajkk xogfgj dycegc pqag wtiokdr lsjakr hjvhbjnh ihndjqw hbdivm jnrwrrdnw bxpd pictekfjj qwmcggtcul.",
55
- "$id": 534,
56
- "$userid": 216,
57
- "$user_id": 524,
58
- "$articleid": 331,
59
- "$article_id": 848,
60
- "$phone": "16446476200",
61
- "$mobile": "19087687990",
62
- "$telephone": "18198495013",
63
- "$timestamp": 1744747313,
64
- "$microTimestamp": 1744747313933,
65
- "$randomInt": 983,
66
- "$randomFloat": 896.2878319111851
5
+ "QUAN-variable_ke": "456",
6
+ "quanJu": "22222",
7
+ "删除变量": "222",
8
+ "获取变量1": "tttt"
67
9
  },
68
10
  "project": {
69
11
  "request": {
@@ -133,13 +75,56 @@ module.exports = {
133
75
  "server_id": "1",
134
76
  "server_type": 1,
135
77
  "uri": ""
78
+ },
79
+ "1a89a49bc9808001": {
80
+ "sort": 600,
81
+ "name": "服务2",
82
+ "server_id": "1a89a49bc9808001",
83
+ "server_type": -1,
84
+ "uri": ""
136
85
  }
137
86
  },
138
- "environment": {}
87
+ "environment": {
88
+ "删除": "111",
89
+ "key": "22222",
90
+ "获取变量": "aaaaa",
91
+ "key——AAAA": "value——1111",
92
+ "variable_key": "123",
93
+ "huanJing": "sssss"
94
+ }
139
95
  },
140
96
  "cookies": {
141
97
  "switch": 1,
142
- "data": []
98
+ "data": [
99
+ {
100
+ "key": "liveCookie",
101
+ "value": "gin",
102
+ "maxAge": 120,
103
+ "domain": "go.apipost.cn",
104
+ "path": "/",
105
+ "secure": true,
106
+ "httpOnly": true,
107
+ "creation": "2025-04-15T21:46:16.859Z",
108
+ "name": "liveCookie",
109
+ "cookie_id": "2f74aa0bab005",
110
+ "expires": "Tue, 15 Apr 2025 21:48:17 GMT",
111
+ "project_id": "1a89866533408002"
112
+ },
113
+ {
114
+ "key": "loseCookie",
115
+ "value": "gin",
116
+ "maxAge": 0,
117
+ "domain": "go.apipost.cn",
118
+ "path": "/",
119
+ "secure": true,
120
+ "httpOnly": true,
121
+ "creation": "2025-04-15T21:46:16.859Z",
122
+ "name": "loseCookie",
123
+ "cookie_id": "2f74aa0bab006",
124
+ "expires": "Tue, 15 Apr 2025 21:46:17 GMT",
125
+ "project_id": "1a89866533408002"
126
+ }
127
+ ]
143
128
  },
144
129
  "system_configs": {
145
130
  "send_timeout": 0,
@@ -166,40 +151,229 @@ module.exports = {
166
151
  "path": "",
167
152
  "base64": ""
168
153
  },
169
- "client_cert": {}
154
+ "client_cert": {
155
+ "https://cc.apipost.cc:6003": {
156
+ "password": "",
157
+ "crt": {
158
+ "file_url": "",
159
+ "file_base64": "data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURuVENDQW9VQ0ZFcDd4Z3J2VVhteWEzTEdmcEFpenRNUkJvN3ZNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1JR0sKTVFzd0NRWURWUVFHRXdKRFRqRVFNQTRHQTFVRUNBd0hRbVZwYW1sdVp6RVFNQTRHQTFVRUJ3d0hRbVZwYW1sdQpaekVRTUE0R0ExVUVDZ3dIWVhCcGNHOXpkREVNTUFvR0ExVUVDd3dEWVhCME1SWXdGQVlEVlFRRERBMWpZeTVoCmNHbHdiM04wTG1Oak1SOHdIUVlKS29aSWh2Y05BUWtCRmhCaFpHMXBia0JoY0dsd2IzTjBMbU5qTUI0WERUSXoKTVRJeE1UQTVOREl4TmxvWERUTXpNVEl3T0RBNU5ESXhObG93Z1lveEN6QUpCZ05WQkFZVEFrTk9NUkF3RGdZRApWUVFJREFkQ1pXbHFhVzVuTVJBd0RnWURWUVFIREFkQ1pXbHFhVzVuTVE4d0RRWURWUVFLREFaaGNHbHZjM1F4CkREQUtCZ05WQkFzTUEyRndkREVXTUJRR0ExVUVBd3dOWTJNdVlYQnBjRzl6ZEM1all6RWdNQjRHQ1NxR1NJYjMKRFFFSkFSWVJZMnhwWlc1MFFHRndhWEJ2YzNRdVkyTXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBdwpnZ0VLQW9JQkFRRG5DalNwV2MvVEovcXg2ZHRCRUlKeHhpME0wTWc1M091U0lNK2dMVnNseTl4SVFTTndGWGhrCi8vRzhTOVl0d2lnMHpwZVNLUlhyNi9tdklQcjlsY3RBakRrZzQ4Q1BQSk5YYVo1RTdQVkRYbThtTXhhS2RBeXEKZVBkT2w2bGJ0a0pWRTB0cElWTFo4UkhEOWU4VFdiNENMNFBUSzkrNFhVSElEUU1FTUdNbWFnRUVRd3ordDdSTQpMZDVvcVAxdHVUdlhBbmlUbmU4TnZhYVQ3NDlqcFhYb3lnV29FaVcwOGJ3NmI2TmZwVVEyeFBsSkdrc2tiblRhCisyTWVqb1ZrSlpDbDFlOUhOYXV2a085WjhQamRYMG9nZTM0OE5pZW83amNDWWhBUmttanVJanhiMU1kU3dPdjcKMTVWS3EwcFFwbjNzVHJrWTVqdjZEeis3dWhSaXVnN2pBZ01CQUFFd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQgpBRGFCdG10NHVPaVpoVlpHdmo1Tko2RUhUUFNGZGxBaVd6U2tiSWllV2RIY1NhK0J3K2xBM1kyalJsYnZNUVVaCndiL21jaFRtNjFJRmlKbnYvN1h2MGtmMkJxUzkyMURXenJHa3FWQk5zRUdIMEdhWGVHMVMwL1pkNXg1RE4zMlEKRW9IRE95K2lOeDlwRzA2cy8ybUlGY1E3eXQ0cW9acXFQZUg4U3VIamZOanlnZnZFUGxiYUJHb0Y4V1dneFluLwp3TzlFK2pYN3VvdlZDWXVrY3NyaEprZzJwK3o5MUFVU3p2NlpTbHlnK3pGM2kyM1Q0ZXA5VDhwRTV2eXE3UlFnClNPT3BQd25uN0d5UWd2UzREbU5LMHkyazc5ZUdGb3VnTWxnS3g1Um5nMUQxNEd0ZFcvMlE0WGxNa2tHZ1ZsR2IKRVRkcGlES1JKWjNTTDJPZ1RsSFpibWM9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K",
160
+ "file_name": "client (1).crt"
161
+ },
162
+ "key": {
163
+ "file_url": "",
164
+ "file_base64": "data:application/x-iwork-keynote-sffkey;base64,LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBNXdvMHFWblAweWY2c2VuYlFSQ0NjY1l0RE5ESU9kenJraURQb0MxYkpjdmNTRUVqCmNCVjRaUC94dkV2V0xjSW9OTTZYa2lrVjYrdjVyeUQ2L1pYTFFJdzVJT1BBanp5VFYybWVST3oxUTE1dkpqTVcKaW5RTXFuajNUcGVwVzdaQ1ZSTkxhU0ZTMmZFUncvWHZFMW0rQWkrRDB5dmZ1RjFCeUEwREJEQmpKbW9CQkVNTQovcmUwVEMzZWFLajliYms3MXdKNGs1M3ZEYjJtaysrUFk2VjE2TW9GcUJJbHRQRzhPbStqWDZWRU5zVDVTUnBMCkpHNTAydnRqSG82RlpDV1FwZFh2UnpXcnI1RHZXZkQ0M1Y5S0lIdCtQRFlucU80M0FtSVFFWkpvN2lJOFc5VEgKVXNEcis5ZVZTcXRLVUtaOTdFNjVHT1k3K2c4L3U3b1VZcm9PNHdJREFRQUJBb0lCQUNXckQwenhIS1lqcFlidQpSdFlEMkJDdXE5ZWtEcEVJaU12SlY3Q1kxSHlFRVVVaWdhR2Jqb2FCQ0N1WC9iSjJMbEgxd05hT3BrbFJydUt6CnNOZzVYT3NJTWFSQUhidjh0MVVRSGtMRWszUkphRHZGSm82cVB3cG9NSUg2emh6cXlVUFBvb0xnY1A2aGhERDcKM3QrN3lQUFlSVmpmbFZrY3MwWG5nUzlrcURXeDBXZStWOGFJMVJCOXVIbUdDcmo4djFZaHFSRWl2dXl4eUVXQwpZSkowVFRqSVhtMC92OVNJRE5FTjJKVExkYmlIdDBvQm9PZk1CWk5MSmhjSWI4cHkvTW5SYW9IN1EvN2VZQllQClNnMzJycXYvZlNjZGhWakltbTNyWEtaclV5NlErcUpNNGp1MCtpV0E4MzRzd2NiaGZhbU5XR2tLcUYzVmo4WEEKendGbkVjRUNnWUVBK056RHpxb3Vlbk9iZE5ORTdFa2FaTDc4TFFlL0VhTkYycHlhS2IvWTFac2F5U2ozSUMxbAp2RCs0V1hQamZJVWl3SldGeEtONGZyVnlldCtZWGhOZ0p3eU9wb2gyZmlaNzExR0paSWRudGFDV3lmRnpGVS8rClZQUm1yUUxIWS9MNHRhdnByTzlhTHBYVWVSYlc0NXVBbUZ5YUtJck1qSkFzMnFpeitKYUxGbUVDZ1lFQTdhcVUKOEE5SHpkVDFsQzB1ZlRoNG1Cdm43enpvSXJHNmY3amhvRVZuazEwWmozKy9pNEFmWEw3VHRuQmtXaTJvZElKbApDb2ZXdGRWbUxvTkhpOER0ZldyWFkzOWhra0ZSSEo5Y01qNEozcEJmaVp0ZUJyaFhucDg1c0xDS0pnWGVNZDNEClhkZVl1TERuczR3Y3FZTnpkbDRQL2cvRGl5RFB5Y29tc3NmdzQ4TUNnWUVBc2pUVWVwOWZIUXpBRzQ1V1lxV08Kb3Vvb2hzNXZRbUFhMjRzYzBoeXhWM1QwWDJ4WVd0Qm5jOEJsY0prT0k5THFxZUhvb29FMC9mZE0vVFEwVmRtbQpGeEJrN2xmMkVpdllycjJTbDB4bk5hYkRrK1MwdG1STUNlWGh5SzZldmJIMTY1SXBpVTcwMHpzenBXcDNneEdOCnFvMVZUd2JscHhwdkpEMStjdHJLeXNFQ2dZRUFyMlo0T3Q4Y0lCVnVGS2h2cWV5Mlc1UWt6UlJIUWV1bTkwSU0KQ2t1T2tGeGlVOXgxRWRCQjFTSGtmNzFjNG96VnlQNis4VkdsTFZkTDdVSG4ySVZQQUlPTWFKc0crSGlLRXpTdApSMHN2MzNqdmVWQVh5Wi9jMG0weWwyc0MyZUwweEJxbFo2bUl4YTJSb3BuaVFWeUpKeTl1WUJOa1BsYTk0Mi8wCnRYY0lHaDhDZ1lCbHJBaVdIOGU4aEhkWjdxTjNOTk51cVkvQjdJWFNPdzFIMEVKbjd3Ui9tZElzalFRYkJGL3gKa05YNndvZDVFeHBzRkVER2lJQ0RiQm1FbW5oaU1TWFBXREhoalZKSkFSUG5sL2Fxc0tNemt0dXdic29DbGQ2OApkT1hkbHNtbGhYZVdrcGp5ZUdCREZ5Y3hPdW80M3F6VzdOOUNpQ285dXBuNGZrSEg3Si95Znc9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=",
165
+ "file_name": "client (1).key"
166
+ },
167
+ "pfx": {
168
+ "file_url": "",
169
+ "file_base64": "",
170
+ "file_name": ""
171
+ },
172
+ "HOST": "https://cc.apipost.cc:6003"
173
+ }
174
+ }
170
175
  },
171
176
  "custom_functions": {},
172
- "collection": [],
173
- "database_configs": {},
174
- "name": "bug-可视化断言",
175
- "ignore_error": -1,
176
- "enable_sandbox": -1,
177
- "iterationCount": 1,
178
- "sleep": 0,
179
- "testing_id": "2e26aeeb35068",
180
- "iterates_data_id": "0",
181
- "iterationData": []
177
+ "collection": [
178
+ {
179
+ "target_id": "301f17ffab04a",
180
+ "target_type": "api",
181
+ "parent_id": "2e93585fab685",
182
+ "name": "使用目录变量",
183
+ "request": {
184
+ "auth": {
185
+ "type": "inherit"
186
+ },
187
+ "body": {
188
+ "mode": "none",
189
+ "parameter": [],
190
+ "raw": "",
191
+ "raw_parameter": [],
192
+ "raw_schema": {
193
+ "type": "object"
194
+ },
195
+ "binary": null
196
+ },
197
+ "pre_tasks": [],
198
+ "post_tasks": [],
199
+ "header": {
200
+ "parameter": []
201
+ },
202
+ "query": {
203
+ "parameter": [],
204
+ "query_add_equal": 1
205
+ },
206
+ "cookie": {
207
+ "parameter": [],
208
+ "cookie_encode": 1
209
+ },
210
+ "restful": {
211
+ "parameter": []
212
+ }
213
+ },
214
+ "parents": [
215
+ {
216
+ "target_id": "2e93585fab685",
217
+ "target_type": "folder"
218
+ }
219
+ ],
220
+ "method": "POST",
221
+ "protocol": "http/1.1",
222
+ "url": "go.apipost.cn",
223
+ "pre_url": ""
224
+ },
225
+ {
226
+ "target_id": "2e93585fab685",
227
+ "target_type": "folder",
228
+ "parent_id": "0",
229
+ "name": "目录使用变量",
230
+ "request": {
231
+ "header": {
232
+ "parameter": [
233
+ {
234
+ "param_id": "2e93d0eb6e6a8",
235
+ "key": "Quan",
236
+ "value": "{{quanJu}}",
237
+ "field_type": "string",
238
+ "not_null": 1,
239
+ "description": "",
240
+ "is_checked": 1,
241
+ "schema": {
242
+ "type": "string"
243
+ },
244
+ "content_type": ""
245
+ },
246
+ {
247
+ "param_id": "2e93e2a76e6aa",
248
+ "key": "Huan",
249
+ "value": "{{huanJing}}",
250
+ "field_type": "string",
251
+ "not_null": 1,
252
+ "description": "",
253
+ "is_checked": 1,
254
+ "schema": {
255
+ "type": "string"
256
+ },
257
+ "content_type": ""
258
+ }
259
+ ]
260
+ },
261
+ "query": {
262
+ "parameter": [
263
+ {
264
+ "param_id": "2e95dac39b6cb",
265
+ "key": "Huan",
266
+ "value": "{{huanJing}}",
267
+ "field_type": "string",
268
+ "not_null": 1,
269
+ "description": "",
270
+ "is_checked": 1,
271
+ "schema": {
272
+ "type": "string"
273
+ },
274
+ "content_type": ""
275
+ },
276
+ {
277
+ "param_id": "2e95ec879b6cd",
278
+ "key": "Quan",
279
+ "value": "{{quanJu}}",
280
+ "field_type": "string",
281
+ "not_null": 1,
282
+ "description": "",
283
+ "is_checked": 1,
284
+ "schema": {
285
+ "type": "string"
286
+ },
287
+ "content_type": ""
288
+ }
289
+ ]
290
+ },
291
+ "body": {
292
+ "parameter": [
293
+ {
294
+ "param_id": "2e95a357ab6c3",
295
+ "key": "Huan",
296
+ "value": "{{huanJing}}",
297
+ "field_type": "string",
298
+ "not_null": 1,
299
+ "description": "",
300
+ "is_checked": 1,
301
+ "schema": {
302
+ "type": "string"
303
+ },
304
+ "content_type": ""
305
+ },
306
+ {
307
+ "param_id": "2e95b9cbab6c6",
308
+ "key": "Quan",
309
+ "value": "{{quanJu}}",
310
+ "field_type": "string",
311
+ "not_null": 1,
312
+ "description": "",
313
+ "is_checked": 1,
314
+ "schema": {
315
+ "type": "string"
316
+ },
317
+ "content_type": ""
318
+ }
319
+ ]
320
+ },
321
+ "cookie": {
322
+ "parameter": [
323
+ {
324
+ "param_id": "2e960a9f5e6d1",
325
+ "key": "Huan",
326
+ "value": "{{huanJing}}",
327
+ "field_type": "string",
328
+ "not_null": 1,
329
+ "description": "",
330
+ "is_checked": 1,
331
+ "schema": {
332
+ "type": "string"
333
+ },
334
+ "content_type": ""
335
+ },
336
+ {
337
+ "param_id": "2e961b6b5e6d4",
338
+ "key": "Quan",
339
+ "value": "{{quanJu}}",
340
+ "field_type": "string",
341
+ "not_null": 1,
342
+ "description": "",
343
+ "is_checked": 1,
344
+ "schema": {
345
+ "type": "string"
346
+ },
347
+ "content_type": ""
348
+ }
349
+ ]
350
+ },
351
+ "auth": {
352
+ "type": "basic",
353
+ "basic": {
354
+ "username": "{{huanJing}}",
355
+ "password": "{{quanJu}}"
356
+ }
357
+ },
358
+ "pre_tasks": [],
359
+ "post_tasks": []
360
+ },
361
+ "parents": [],
362
+ "server_id": "0",
363
+ "pre_url": ""
364
+ }
365
+ ],
366
+ "database_configs": {}
182
367
  },
183
368
  "test_events": [
184
369
  {
370
+ "type": "api",
185
371
  "data": {
186
- "data": {
187
- "type": "envVars",
188
- "expression": {
189
- "path": "key",
190
- "compareType": "eq",
191
- "compareValue": "12345"
192
- }
193
- },
194
- "name": "可视化断言"
195
- },
196
- "sort": 1,
197
- "type": "assert_visual",
198
- "enabled": 1,
199
- "test_id": "2e26aeeb35068",
200
- "event_id": "2e26e25b35069",
201
- "project_id": "2c310b4f35066",
202
- "parent_event_id": "0"
372
+ "target_id": "301f17ffab04a",
373
+ "project_id": "1a89866533408002",
374
+ "parent_id": "2e93585fab685",
375
+ "target_type": "api"
376
+ }
203
377
  }
204
378
  ]
205
379
  }