如何使用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
相关产品推荐
相关产品推荐

