记录一下:使用 JS 实现此功能!
目前为 demo 版本
1、导出单个接口(包含一个完整的成功用例)
2、使用vscode打开,格式化代码
3、调用 JS 脚本,生成完整的case
原理:根据第一个成功用例,生成对应的基础用例
// case 集合
let caseArr = []
// 得到一个完整的正确case
let apiCaseObj = getApiCaseObj()
caseArr.push(apiCaseObj)
// 得到所有的请求参数名称
// queryString参数
let queryParam = apiCaseObj.parameters.query
// requestBody参数
let requestBodyParam = apiCaseObj.requestBody.parameters
// 请求为queryString
if (queryParam.length){
// 请求为requestBody
let requestArr = queryParam
let requestNameArr = []
requestArr.forEach(item => {
requestNameArr.push(item.relatedName)
})
let id = 0
for (let i = 0; i < requestNameArr.length; i++) {
// 根据现有参数,生成参数不传的case
id ++
let noParamApiCaseObj = getApiCaseObj()
noParamApiCaseObj.id += id
noParamApiCaseObj.name = requestNameArr[i] + ' 不传'
noParamApiCaseObj.parameters.query[i].enable = false
caseArr.push(noParamApiCaseObj)
id ++
// 根据现有参数,生成参数为空的case
let nullParamApiCaseObj = getApiCaseObj()
nullParamApiCaseObj.id += id
nullParamApiCaseObj.name = requestNameArr[i] + ' 为空'
nullParamApiCaseObj.parameters.query[i].value = ''
caseArr.push(nullParamApiCaseObj)
id ++
// 根据现有参数,生成参数错误的case
let errParamApiCaseObj = getApiCaseObj()
errParamApiCaseObj.id += id
errParamApiCaseObj.name = requestNameArr[i] + ' 填错'
errParamApiCaseObj.parameters.query[i].value = '填错'
caseArr.push(errParamApiCaseObj)
}
}else if (requestBodyParam.length){
// 请求为requestBody
let requestArr = requestBodyParam
let requestNameArr = []
requestArr.forEach(item => {
requestNameArr.push(item.relatedName)
})
let id = 0
for (let i = 0; i < requestNameArr.length; i++) {
// 根据现有参数,生成参数不传的case
id ++
let noParamApiCaseObj = getApiCaseObj()
noParamApiCaseObj.id += id
noParamApiCaseObj.name = requestNameArr[i] + ' 不传'
noParamApiCaseObj.requestBody.parameters[i].enable = false
caseArr.push(noParamApiCaseObj)
id ++
// 根据现有参数,生成参数为空的case
let nullParamApiCaseObj = getApiCaseObj()
nullParamApiCaseObj.id += id
nullParamApiCaseObj.name = requestNameArr[i] + ' 为空'
nullParamApiCaseObj.requestBody.parameters[i].value = ''
caseArr.push(nullParamApiCaseObj)
id ++
// 根据现有参数,生成参数错误的case
let errParamApiCaseObj = getApiCaseObj()
errParamApiCaseObj.id += id
errParamApiCaseObj.name = requestNameArr[i] + ' 填错'
errParamApiCaseObj.requestBody.parameters[i].value = '填错'
caseArr.push(errParamApiCaseObj)
}
}
//格式化
console.log("\"cases\": " + JSON.stringify(caseArr, null, 2))
// 无格式化操作
// console.log("\"cases\": " + JSON.stringify(caseArr))
/**
* return 内容改为复制的第一条case内容
*/
function getApiCaseObj() {
return {
"id": 76044147,
"type": "http",
"path": null,
"name": "成功",
"responseId": 174480436,
"parameters": {
"query": [
{
"id": "L1QNi9y14D",
"relatedName": "a",
"relatedId": "oODWNa86ef",
"value": "1",
"enable": true,
"isDelete": false
},
{
"id": "zD3JJZcBnB",
"relatedName": "b",
"relatedId": "nX407w8BgW",
"value": "2",
"enable": true,
"isDelete": false
}
]
},
"commonParameters": {
"query": [],
"body": [],
"header": [],
"cookie": []
},
"requestBody": {
"parameters": [],
"type": "none"
},
"preProcessors": [],
"postProcessors": [],
"inheritPostProcessors": {},
"inheritPreProcessors": {},
"auth": {},
"advancedSettings": {}
}
}
控制台得到完整的用例后复制下来。
再重新导入到 apifox 中即可!!!