Cypress web自動化26-mochawesome-merge合並json報告


前言

生成的報告有多個 json 文件時,需使用 mochawesome-merge 合並 json 報告。

環境准備

使用 npm 安裝

$ npm install mochawesome-merge --save-dev

查看安裝版本

D:\Cypress>npm list mochawesome-merge
D:\Cypress
`-- mochawesome-merge@4.0.3

示例

JavaScript API

const { merge } = require('mochawesome-merge')

// See Params section below
const options = {
  files: [
    './report/*.json',

    // you can specify more files or globs if necessary:
    './mochawesome-report/*.json',
  ],
}

merge(options).then(report => {
  console.log(report)
})

命令行

$ npx mochawesome-merge ./report/*.json > output.json

也可以合並多個文件夾下的json文件

$ npx mochawesome-merge ./report/.json ./mochawesome-report/.json > output.json

參數
files: 匹配路徑,默認為 ["./mochawesome-report/mochawesome*.json"] .

v4版本改變

版本4有一個突破性的變化-它不再接受像reportDir或rootDir這樣的參數。相反,它現在接受到源報表文件的文件路徑或全局模式列表。
如果你要遷移到版本4,你可能需要相應地更改你的參數。

如果有一堆文件要合並到./mochawesome-report 目錄下。那么你可能是這樣使用 mochawesome-merge:

merge({
  reportDir: "mochawesome-report",
});

切換到版本4后,需要將reportDir param重命名為files,並將該值更改為指向文件而不是目錄:

merge({
-  reportDir: "mochawesome-report",
+  files: ["./mochawesome-report/*.json"],
})

升級到版本4后,您只需刪除--reportDir選項,而需要指定一個或多個全局模式,用空格分隔每個模式:

- npx mochawesome-merge --reportDir mochawesome-report > mochawesome.json
+ npx mochawesome-merge ./mochawesome-report/*.json > mochawesome.json

Cypress

創建這個庫的主要動機是能夠將 mochawesome 與 Cypress 一起使用。
從版本3.0.0版本以后,Cypress 分別運行每個用例,這導致生成多個 mochawesome 報告,mochawesome-merge 用於合並這些報告,然后為所有 Cypress 測試生成一個 HTML 報告。

首先配置 cypress.json, 這里可以不指定reportDir參數,報告默認放到 mochawesome-report 目錄:

{
  // use mochawesome reporter as usually
  "reporter": "mochawesome",
  "reporterOptions": {
    // disable overwrite to generate many JSON reports
    "overwrite": false,
    // do not generate intermediate HTML reports
    "html": false,
    // generate intermediate JSON reports
    "json": true
  }
}

然后寫一個 scripts/cypress.js 腳本結合 mochawesome-merge 執行你的用例:

const cypress = require('cypress')
const marge = require('mochawesome-report-generator')
const { merge } = require('mochawesome-merge')

cypress.run().then(
  () => {
    generateReport()
  },
  error => {
    generateReport()
    console.error(error)
    process.exit(1)
  }
)

function generateReport(options) {
  return merge(options).then(report => marge.create(report, options))
}

執行用例

在 package.json中 加一個scripts

{
"scripts": {
"cypress:open": "cypress open",
"cypress:run": "cypress run --browser chrome",
"cypress:report": "node scripts/cypress.js"

}

}
這樣通過 npm 就能執行了

npm run cypress:report

運行完成后在根目錄下:mochawesome-report 生成報告

打開html查看報告內容

作者:上海-悠悠 交流QQ群:939110556
原文blog: https://www.cnblogs.com/yoyoketang


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM