Azure DevOps流水线集成Allure报告显示NAN%及空白数据问题求助
Azure DevOps流水线集成Allure报告显示NAN%及空白数据问题求助
嗨,我来帮你分析下这个问题~ 刚上手Cypress+Azure DevOps+Allure的组合,确实容易在报告环节踩坑,咱们一步步来定位和解决:
首先,先看你目前流水线里可能存在的几个核心问题:
- 你只安装了
allure-commandline(用来生成报告的工具),但缺少了Cypress和Allure之间的适配器依赖allure-cypress,没有这个适配器,Cypress执行测试后根本生成不了Allure需要的原始测试结果文件,自然报告就会显示NAN%和空白数据。 - 你的流水线配置看起来被截断了,我没看到执行Cypress测试的关键步骤(比如
npx cypress run的命令),如果没跑测试,那肯定没有测试数据生成。 - 另外,你先执行了
npm install,之后又单独安装cypress和allure依赖,其实可以把所有需要的依赖都提前写到项目根目录的package.json里,这样一次npm install就能装全,避免安装顺序或路径的问题。
接下来给你具体的修复步骤:
1. 补全必要的依赖
首先在你的项目本地(或者直接修改仓库里的package.json),把需要的依赖加进去:
{ "devDependencies": { "cypress": "^13.0.0", // 可替换为你需要的版本 "allure-cypress": "^2.12.0", "allure-commandline": "^2.24.0" } }
这样你流水线里的npm install就能一次性装完所有依赖,不用单独执行多次npm install命令,减少出错概率。
2. 配置Cypress使用Allure报告器
在你的Cypress配置文件(比如cypress.config.js)里,添加Allure报告器的配置,让Cypress执行测试时生成Allure的原始结果:
const { defineConfig } = require("cypress"); const allureWriter = require('allure-cypress/writer'); module.exports = defineConfig({ e2e: { setupNodeEvents(on, config) { allureWriter(on, config); // 启用Allure报告生成 return config; }, }, });
3. 修复流水线的测试执行和报告生成步骤
把你的流水线补全,确保包含执行Cypress测试和生成/发布Allure报告的步骤,调整后的流水线大概是这样:
trigger: - main pool: name: XXXXXXXXX steps: - task: CopyFiles@2 displayName: 'Copy Files to: $(build.artifactstagingdirectory)' inputs: Contents: '**\*' TargetFolder: $(build.artifactstagingdirectory) - task: Npm@1 inputs: command: 'install' workingDir: $(build.artifactstagingdirectory) displayName: 'Install all dependencies' # 执行Cypress测试,生成Allure原始结果文件 - task: Npm@1 inputs: command: 'custom' workingDir: $(build.artifactstagingdirectory) customCommand: 'cypress run --reporter allure-cypress' displayName: 'Run Cypress tests with Allure reporter' # 生成Allure报告 - task: Npm@1 inputs: command: 'custom' workingDir: $(build.artifactstagingdirectory) customCommand: 'allure generate allure-results --clean -o allure-report' displayName: 'Generate Allure report' # 上传Allure报告到流水线工件 - task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(build.artifactstagingdirectory)/allure-report' ArtifactName: 'AllureReport' publishLocation: 'Container'
4. 关键的验证点
- 确保Cypress测试执行后,在
$(build.artifactstagingdirectory)目录下生成了allure-results文件夹,里面有一堆.json和.attachment文件,这些就是Allure报告的源数据,如果没有这个文件夹,说明测试没生成结果,报告肯定是空的。 - 检查Allure生成报告的命令是否指向了正确的
allure-results路径,路径错了也会导致找不到数据,显示NAN%。
另外,你之前的流水线里单独安装Cypress的步骤其实没必要,因为如果package.json里已经有Cypress依赖,npm install会自动安装,单独安装反而可能导致版本不一致的问题。
备注:内容来源于stack exchange,提问作者Deepika Gupta
相关产品推荐
相关产品推荐

