定制测试报告

CukeTest在执行JavaScript测试项目后会生成.json.log格式的运行日志文件和.json报告文件。通过解析这些文件,您可以根据项目需求生成个性化的测试报告。

.json.log 运行日志

.json.log文件详细记录了测试执行的过程,包括每个测试场景和步骤的执行结果,为测试分析提供了丰富的数据。

示例日志片段:

{
  "run": {
    "meta": {
      // 测试运行的元数据
      ...
    }
  }
}{
  "feature": {
    // feature文件的详细信息
    ...
  }
}{
  "scenario": {
    // 场景信息,包括步骤和结果
    ...
  }
}

文件中包含了关于测试运行环境的元数据,如测试开始时间、操作系统平台、CPU信息和CukeTest版本等。它详细列出了每个功能(Feature)和场景(Scenario)的执行信息,包括执行步骤、结果和持续时间。

.json 格式的测试报告

.json 报告提供了一个更结构化的视图,方便您理解测试用例的执行流程和结果。

要生成.json格式报告,请在运行配置中进行设置。

示例内容:

[
  {
    // 测试feature的详细信息
    ...
    "elements": [
      {
        // 场景信息,包括步骤和结果
        ...
      }
    ]
  }
]

它包含了测试功能的描述、关键字、名称、行号和场景详情。场景详细信息包括步骤、结果和持续时间。

利用.json.log.json文件生成定制化报告

要生成个性化的测试报告,您可以编写一个脚本或程序来解析这两个文件。脚本可以读取这些文件中的数据,然后根据您的需求格式化并生成测试报告。您可以选择将报告输出为HTML、PDF或其他格式,以方便团队成员查阅和分享。

例如,您可以设计一个HTML报告模板,然后使用脚本将测试数据动态填充到模板中。这些数据可以包括测试概况、各个测试场景的执行细节、通过与失败的步骤等信息。此外,您还可以集成图表或图形元素,使测试结果的展示更加直观和易于理解。

通过这种方式,您不仅可以生成标准的测试报告,还可以根据团队的具体需求定制报告的内容和布局。

下面是一个示例脚本,展示了如何解析.json文件,并生成定制化的测试报告,如下图所示。

定制报告

示例脚本:

JavaScript
const fs = require('fs');

function parseJsonData(filePath) {
    const fileData = fs.readFileSync(filePath, 'utf8');
    if (filePath.endsWith('.json')) {
        return JSON.parse(fileData);
    } else {
        console.error('不支持的文件扩展名');
        return null;
    }
}

// 创建测试报告的头部
function createReportHeader() {
    return `
        <html>
        <head>
            <title>测试报告</title>
            <style>
                body { font-family: Arial, sans-serif; margin: 20px; }
                h1 { background-color: #4CAF50; color: white; padding: 10px; }
                ul { list-style-type: none; padding: 0; }
                li { margin-bottom: 5px; }
                table { border-collapse: collapse; width: 80%; }
                th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
                th { background-color: #f2f2f2; }
                tr:nth-child(even) { background-color: #f2f2f2; }
            </style>
        </head>
        <body>
            <h1>测试报告</h1>`;
}

// 创建测试报告的内容
function createReportContent(testData) {
    let content = '';
    testData.forEach((feature, index) => {
        content += `<h2>功能 ${index + 1}: ${feature.name}</h2><ul><li><strong>测试描述:</strong> ${feature.description}</li></ul><table><tr><th>场景</th><th>步骤</th><th>状态</th><th>执行时间</th></tr>`;
        feature.elements.forEach(element => {
            content += `<tr><td><strong>${element.name}</strong></td><td><ul>${element.steps.map(step => `<li>${step.keyword} - ${step.name}</li>`).join('')}</ul></td><td>${element.result.status}</td><td>${(element.result.duration / 1000000).toFixed(2)}秒</td></tr>`;
        });
        content += `</table><br>`;
    });
    return content;
}

// 创建测试报告的尾部
function createReportFooter() {
    return '</body></html>';
}

// 创建测试报告
function createTestReport(jsonData) {
    return createReportHeader() + createReportContent(jsonData) + createReportFooter();
}


// 使用方法
const filePath = 'path/to/your/test_data.json';
const jsonData = parseJsonData(filePath);
const report = createTestReport(jsonData);
const reportFileName = 'test_report.html';
fs.writeFileSync(reportFileName, report, 'utf8');
console.log(`测试报告已生成并保存为${reportFileName}`);

results matching ""

    No results matching ""