{{data.report_name || '-'}}
{{formatDate(data.start_at)}} - {{formatDate(data.end_at)}}
{{data.env_name || '-'}}
接口通过率
{{data.http && data.http.httpPassPer ? data.http.httpPassPer : '0%'}}
请求总数
{{data.http && data.http.total ? data.http.total : 0}}
{{data.http && data.http.error ? data.http.error : 0}}失败
{{data.http && data.http.success ? data.http.success : 0}}成功
断言通过率
{{data.assert && data.assert.assertPassPer ? data.assert.assertPassPer : '0%'}}
{{data.assert && data.assert.error ? data.assert.error : 0}}失败
{{data.assert && data.assert.success ? data.assert.success : 0}}成功
平均响应时间
{{data.avg_response_time || 0}} ms
总耗时:{{data.total_time || 0}} ms
循环次数 : {{data.total_request_count || 0}}
总响应时间 : {{data.total_response_time || 0}} ms
步骤数 : {{data.list ? data.list.length : 0}}
总响应数据大小 : {{formatBytes(data.total_response_size) || '-'}}
测试详情
{{each data.list item key}}
{{if item.type === 'api' || item.type === 'request' || item.type === 'sample'}}
{{if toUpper(item.status && item.status.assert) == 'OK' && toUpper(item.status && item.status.http) ==
'OK'}}

{{else}}

{{/if}}
{{key + 1}}
API
{{item.method == null ? '-' : item.method}}
{{item.name == null ? '-' : item.name}}
{{item.code == null ? '-' : item.code}}・{{item.response_time == null ? '-' : item.response_time}}
ms・{{formatBytes(item.response_size) || '-' }}
{{if toUpper(item?.status?.assert) != 'OK' && item?.status?.assert?.length > 0}}
{{each item?.status?.assert assert}}
{{if !(assert && assert.passed)}}
{{assert && assert.name != null ? assert.name : '-'}}: {{assert && assert.error &&
assert.error.message != null ? assert.error.message : '-'}}
{{else}}
{{assert && assert.name != null ? assert.name : '-'}} passed!
{{/if}}
{{/each}}
{{/if}}
{{else if item.type === 'wait'}}
{{key + 1}}
等待
{{item.sleep == null ? '-' : item.sleep}}ms
完成・{{(item.endTime || 0) - (item.startTime || 0)}}ms
{{else if item.type === 'script'}}
{{key + 1}}
脚本
{{item.name == null ? '-' : item.name}}
完成・{{(item.endTime || 0) - (item.startTime || 0)}}ms
{{else if item.type === 'assert_visual'}}
{{if toUpper(item.status && item.status.assert) == 'OK' && toUpper(item.status && item.status.http) ==
'OK'}}

{{else}}

{{/if}}
{{key + 1}}
可视化断言
{{item.name == null ? '-' : item.name}}
完成・{{(item.endTime || 0) - (item.startTime || 0)}}ms
{{if toUpper(item?.status?.assert) != 'OK' && item?.status?.assert?.length > 0}}
{{each item?.status?.assert assert}}
{{if !(assert && assert.passed)}}
{{assert && assert.name != null ? assert.name : '-'}}: {{assert && assert.error &&
assert.error.message != null ? assert.error.message : '-'}}
{{else}}
{{assert && assert.name != null ? assert.name : '-'}} passed!
{{/if}}
{{/each}}
{{/if}}
{{else if item.type === 'multi_if'}}
{{if item.status && item.status.isMatched}}

{{else}}

{{/if}}
{{key + 1}}
IF
{{item.name == null ? '-' : item.name}}
{{each item.status && item.status.condition condition conditionIndex}}
{{set compareTypes = typeof BASE_COMPARE_TYPES !== 'undefined' ? BASE_COMPARE_TYPES : []}}
{{set compareType = compareTypes.find(function(compareItem) { return compareItem.value === (condition
&& condition.compare) })}}
{{if conditionIndex > 0}}{{toUpper(condition && condition.condType)}}{{/if}}
{{condition && condition.leftValue && condition.leftValue.variable != null ?
condition.leftValue.variable : '-'}}
{{compareType && compareType.label ? compareType.label : (condition && condition.compare ?
condition.compare : '-')}}
{{condition && condition.rightValue && condition.rightValue.variable != null ?
condition.rightValue.variable : '-'}}
{{/each}}
{{else if item.type === 'if'}}
{{if item.status && item.status.isMatched}}

{{else}}

{{/if}}
{{key + 1}}
IF
{{set compareTypes = typeof BASE_COMPARE_TYPES !== 'undefined' ? BASE_COMPARE_TYPES : []}}
{{set compareType = compareTypes.find(function(compareItem) { return compareItem.value ===
(item.status && item.status.condition && item.status.condition.compare) })}}
{{item.status && item.status.condition && item.status.condition.leftValue &&
item.status.condition.leftValue.variable != null ? item.status.condition.leftValue.variable :
'-'}}
{{compareType && compareType.label ? compareType.label : (item.status && item.status.condition &&
item.status.condition.compare ? item.status.condition.compare : '-')}}
{{item.status && item.status.condition && item.status.condition.rightValue &&
item.status.condition.rightValue.variable != null ? item.status.condition.rightValue.variable :
'-'}}
{{else if item.type === 'assert'}}
{{if toUpper(item.status && item.status.assert) == 'OK' && toUpper(item.status && item.status.http) ==
'OK'}}

{{else}}

{{/if}}
{{key + 1}}
断言
{{item.name == null ? '-' : item.name}}
完成・{{(item.endTime || 0) - (item.startTime || 0)}}ms
{{if toUpper(item?.status?.assert) != 'OK' && item?.status?.assert?.length > 0}}
{{each item?.status?.assert assert}}
{{if !(assert && assert.passed)}}
{{assert && assert.name != null ? assert.name : '-'}}: {{assert && assert.error &&
assert.error.message != null ? assert.error.message : '-'}}
{{else}}
{{assert && assert.name != null ? assert.name : '-'}} passed!
{{/if}}
{{/each}}
{{/if}}
{{else if item.type === 'sql'}}
{{key + 1}}
数据库
{{item.name == null ? '-' : item.name}}
完成・{{(item.endTime || 0) - (item.startTime || 0)}}ms
{{/if}}
{{/each}}