You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Protractor生成包含Expect验证结果的TXT测试报告?

解决Protractor循环验证并生成TXT测试报告的方案

嘿,我看你正在用Protractor做循环验证并生成测试报告,刚好之前帮别人解决过类似需求,给你整理了一套能直接跑通的方案~

核心思路

  • 先读取JSON文件里的57个字符串列表
  • 循环遍历每个字符串,执行你的验证逻辑
  • 把每次验证的结果(成功/失败/异常)拼接成可读性强的报告内容
  • 循环结束后将完整报告写入本地TXT文件

完整代码示例

const fs = require('fs'); // 引入Node.js文件系统模块
const path = require('path'); // 处理文件路径,避免跨平台问题

it("Perform the loop to search for different strings and generate report", async function() {
    browser.waitForAngularEnabled(false);
    await browser.get("http://WebSite.es");

    // 读取你的JSON测试数据文件(路径根据实际情况调整)
    const jsonfile = require('./test-strings.json');
    const stringsList = jsonfile.strings; // 获取包含57个字符串的数组
    let reportContent = "测试报告 - 字符串搜索验证结果\n";
    reportContent += "===================================\n";

    // 循环遍历每个测试字符串
    for (let i = 0; i < stringsList.length; i++) {
        const currentString = stringsList[i];
        reportContent += `\n第${i+1}个测试项:搜索字符串「${currentString}」\n`;
        
        try {
            // ↓↓↓ 这里替换成你实际的验证逻辑 ↓↓↓
            // 示例:假设页面有搜索框、搜索按钮,需要验证结果是否显示
            await element(by.css('#search-input')).clear(); // 先清空输入框
            await element(by.css('#search-input')).sendKeys(currentString);
            await element(by.css('#search-button')).click();
            
            // 等待结果区域加载出来,超时时间5秒
            await browser.wait(protractor.ExpectedConditions.presenceOf(element(by.css('#result-area'))), 5000);
            
            const isResultValid = await element(by.css('#result-area')).isDisplayed();
            if (isResultValid) {
                reportContent += "✅ 验证成功:搜索结果正常显示\n";
            } else {
                reportContent += "❌ 验证失败:未找到有效搜索结果\n";
            }
            // ↑↑↑ 这里替换成你实际的验证逻辑 ↑↑↑
        } catch (error) {
            // 捕获单个测试项的异常,避免中断整个循环
            reportContent += `❌ 验证异常:${error.message}\n`;
        }
    }

    // 将报告写入TXT文件(路径可自定义,这里存在当前脚本目录下)
    const reportPath = path.join(__dirname, 'test-search-report.txt');
    fs.writeFileSync(reportPath, reportContent, 'utf8');
    console.log(`测试报告已生成,路径:${reportPath}`);
});

关键细节说明

  • 异步处理:Protractor的所有浏览器操作都是异步的,所以必须用async/await来确保代码按顺序执行,不然会出现逻辑混乱
  • 错误捕获:每个循环里加try/catch,就算某个字符串验证失败,整个循环也能继续执行,所有测试结果都会被记录下来
  • 文件写入:用fs.writeFileSync同步写入文件,确保所有验证完成后再生成完整报告;如果需要每次验证后就追加内容到文件,可以换成fs.appendFileSync
  • 报告可读性:用✅和❌符号区分结果,加上序号和字符串内容,方便后续快速排查问题

扩展优化建议

  • 如果JSON文件很大,可以改用fs.readFile异步读取,避免阻塞测试进程
  • 可以给每个测试项添加时间戳,方便定位问题发生的具体时间
  • 支持将报告格式改成CSV,方便后续用Excel等工具做统计分析
  • 如果需要更复杂的报告(比如HTML格式),可以结合模板引擎生成

内容的提问来源于stack exchange,提问作者Alexandre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:24:48