{{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'}} success {{else}} error {{/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'}} success {{else}} error {{/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}} success {{else}} error {{/if}}
{{key + 1}}
IF
{{item.name == null ? '-' : item.name}}
{{else if item.type === 'if'}}
{{if item.status && item.status.isMatched}} success {{else}} error {{/if}}
{{key + 1}}
IF
{{else if item.type === 'assert'}}
{{if toUpper(item.status && item.status.assert) == 'OK' && toUpper(item.status && item.status.http) == 'OK'}} success {{else}} error {{/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}}