const defaultTheme = require('./defaultTheme.js'); function json_format(json) { if (json && typeof json === 'object') { return JSON.stringify(json, null, ' '); } return json; } module.exports = function renderToHtml(reports) { let tp = createHtml(reports); return tp; }; function createHtml(reports) { let mdTemplate = ``; let left = ``; reports.list.map((item, index) => { mdTemplate += baseHtml(index, item.name, item.path, item.status); mdTemplate += validHtml(item.validRes); mdTemplate += requestHtml(item.url, item.headers, item.data); mdTemplate += reponseHtml(item.res_header, item.res_body); left += leftHtml(index, item.name, item.code); // left += codeHtml(item.code); }); return createHtml5(left, mdTemplate, reports.message, reports.runTime); } function createHtml5(left, tp, msg, runTime) { let message = ``; if (msg.failedNum === 0) { message += `
一共 ${ msg.successNum } 测试用例, 全部验证通过(${runTime})
`; } else { message += `
一共 ${msg.len} 测试用例, ${ msg.successNum } 个验证通过, ${msg.failedNum} 个未通过(${runTime})
`; } //html5模板 let html = ` 测试报告 ${defaultTheme}
`; return html; } function requestHtml(url, headers, params) { headers = json_format(headers, null, ' '); params = json_format(params); let html = ``; html += `

Request

Url
${url}
`; html += headers ? `
Headers
${headers}
` : ``; html += params ? `
Body
${params}
` : ``; html += `
`; return html; } function reponseHtml(res_header, res_body) { res_header = json_format(res_header, null, ' '); res_body = json_format(res_body, null, ' '); let html = ``; html += `

Reponse

`; html += res_header ? `
Headers
${res_header}
` : ``; html += res_body ? `
Body
${res_body}
` : ``; html += `
`; return html; } function validHtml(validRes) { if (validRes && Array.isArray(validRes)) { validRes = validRes.map((item, index) => { return `
${item.message}
`; }); } let html = `
验证结果
${validRes}
`; return html; } function baseHtml(index, name, path, status) { let html = `

${name}

基本信息

Path
${path}
Status
${status}
`; return html; } function leftHtml(index, name, code) { let html = `
${name} ${codeHtml(code)}
`; return html; } function codeHtml(code) { let codeHtml = ``; switch (code) { case 0: codeHtml += `
`; break; case 400: codeHtml += `
`; break; case 1: codeHtml += `
`; break; default: codeHtml += `
`; break; } return codeHtml; }