概述

JUnit 是一种广泛使用的 XML 格式,用于生成测试结果,大多数 CI 系统(例如 Jenkins)都具有原生支持来将其插入,以便可以显示更高级的报告。

Nightwatch 默认情况下会输出 JUnit 格式的 XML,这可以通过 output_folder 配置设置进行控制。

配置

HTML 报告器从 v2.2 开始 **默认启用**,连同 HTML 和 JSON 报告器,但其行为可以通过以下方式进行配置

通过配置文件

output_folder 配置设置用于指定保存 JUnit XML 报告文件的目录。Nightwatch 为每个测试套件文件编写一个 XML 文件。

nightwatch/.../lib/settings/defaults.js
module.exports = {
  output_folder: 'tests_output'
}

有关测试输出相关设置的完整列表,请参阅 配置 > 输出设置 页面。

通过 CLI

您还可以使用 --output 标志通过 CLI 在运行时配置输出文件夹

nightwatch --output ./tests-output

有关 Nightwatch 接受的 CLI 标志的完整列表,请参阅 CLI 参考页面

XML 文件名遵循以下模式

<BROWSER>_<VERSION>__<testSuiteFileName>.xml

示例

步骤 0:创建新项目

首先,让我们创建一个新的空项目并在其中安装 Nightwatch

mkdir ./test-project && cd ./test-project

步骤 1:安装 Nightwatch 和 chromedriver

从 NPM 安装 nightwatchchromedriverchromedriver 是用于在 Google Chrome 浏览器中运行测试的 W3C WebDriver 实现;请确保您的机器上安装了最新版本的 Chrome 浏览器)

npm i nightwatch chromedriver

步骤 2:运行示例测试

请考虑 duckDuckGo.js 示例测试

duckDuckGo.js
describe('duckduckgo example', function() {
  it('Search Nightwatch.js and check results', function(browser) {
    browser
      .navigateTo('https://duckduckgo.com')
      .waitForElementVisible('#search_form_input_homepage')
      .sendKeys('#search_form_input_homepage', ['Nightwatch.js'])
      .click('#search_button_homepage')
      .assert.visible('.results--main')
      .assert.textContains('.results--main', 'Nightwatch.js');
  }); 
});

我们可以使用以下命令运行它

npx nightwatch examples/tests/duckDuckGo.js --env chrome

要仅生成内置的 JUnit-XML 报告,请运行以下命令

npx nightwatch examples/tests/duckDuckGo.js --env chrome --reporter=junit

要同时生成内置的 JUnit-XML 和 HTML 报告,请运行以下命令(v2.2+)

npx nightwatch examples/tests/duckDuckGo.js --env chrome --reporter=junit --reporter=html

步骤 3:查看 JUnit XML 报告

JUnit XML 报告应该已生成在当前项目目录内的本地 tests_output 文件夹中。它看起来像这样

<?xml version="1.0" encoding="UTF-8" ?>
<testsuites errors="0"
            failures="0"
            tests="1">

  <testsuite name="duckDuckGo"
    errors="0" failures="0" hostname="" id="" package="duckDuckGo" skipped="0"
    tests="1" time="2.007" timestamp="">
  
    <testcase name="Search Nightwatch.js and check results" classname="duckDuckGo" time="2.007" assertions="3">
    </testcase>
  </testsuite>

</testsuites>
</pre>

Jenkins 集成

JUnit 格式的 XML 输出通过“发布 JUnit 测试结果报告”构建后操作默认集成到 Jenkins 中。

Publish JUnit test result report

通过将测试报告集成到 Jenkins,您可以生成趋势和报告,并充分利用 Jenkins 报告功能。

Jenkins test results history

有关更多详细信息,请参阅 Jenkins 用户指南

JUnit 模式

完整的 Apache Ant JUnit XML .xsd 模式可在 Github 上获得:windyroad/JUnit-Schema/blob/master/JUnit.xsd

禁用 JUnit 报告

如果需要,可以通过将 output_folder 配置设置设置为 false 来完全禁用报告

nightwatch.conf.js
module.exports = {
  output_folder: false
}