roydude/behat-html-formatter

该包的最新版本(v0.1.0)没有可用的许可证信息。

为 Behat 测试创建 HTML 报告(emuse/behat-html-formatter 的增强版本)

v0.1.0 2015-05-27 15:09 UTC

This package is not auto-updated.

Last update: 2024-09-20 22:06:52 UTC


README

Behat 3 扩展,用于从测试结果生成 HTML 报告(基于 emuse 的原始版本:https://github.com/dutchiexl/BehatHtmlFormatterPlugin)。我所做的更改仅与 Twig 报告有关(见下文)。

Latest Stable Version Total Downloads Latest Unstable Version License

Twig 报告

Twig Screenshot Twig Screenshot

如何使用?

  • 该工具可以通过 composer 轻松安装。
  • behat.yml 文件中定义格式化器
  • 修改 behat.yml 文件中的设置

安装

先决条件

此扩展需要

  • PHP 5.3.x 或更高版本
  • Behat 3.x 或更高版本

通过 composer

使用 Composer 是保持测试套件更新的最简单方法。

使用 composer 安装

$ composer require --dev roydude/behat-html-formatter

使用 composer.json 安装

将 BehatHtmlFormatterPlugin 添加到您的 composer.json 中的依赖项列表。

{
    "require": {
        "behat/behat": "3.*@stable",
        "roydude/behat-html-formatter": "0.1.*",
    },
    "minimum-stability": "dev",
    "config": {
        "bin-dir": "bin/"
    }
}

然后只需使用 composer 安装它

$ composer install --dev --prefer-dist

您可以在其 官方网站 上了解更多关于 Composer 的信息。

基本用法

通过在您的 behat.yml 中指定其类来激活扩展

# behat.yml
default:
  suites:
    ... # All your awesome suites come here

  formatters:
    html:
      output_path: %paths.base%/build/html/behat

  extensions:
    roydude\BehatHTMLFormatter\BehatHTMLFormatterExtension:
      name: html
      renderer: Twig
      file_name: index
      print_args: true
      print_outp: true
      loop_break: true

配置

  • (noreport) 部分作为测试套件名称的一部分,意味着它将不会出现在报告中(对于缓存测试等,这很有用,例如,这对于阅读报告的商业用户来说并不那么有趣)。
  • output_path - Behat 将保存 HTML 报告的位置。此路径相对于 %paths.base%,当省略时,将默认设置为相同的路径。
  • renderer - Behat 将使用的渲染引擎,因此 Behat 应输出哪些报告格式(允许多个报告格式,用逗号分隔)。允许的值包括
  • Twig 基于 Twig 的新颖且现代的报告格式。
  • file_name - (可选)Behat 将使用一个固定的文件名,并在每次构建后覆盖相同的文件。默认情况下,Behat 将使用随机名称创建一个新的 HTML 文件(例如 "renderer name"_"date hour")。
  • print_args - (可选)如果设置为 true,Behat 将将每个步骤的所有参数添加到报告中。(例如,表格)。
  • print_outp - (可选)如果设置为 true,Behat 将将每个步骤的输出添加到报告中。(例如,异常)。
  • loop_break - (可选)如果设置为 true,Behat 将在打印场景大纲时在每次执行后添加一个分隔的换行符。

阻止的测试

要标记测试为跳过,请确保它以 PendingExcpetion 退出。

throw new PendingException ("This scenario is blocked by bug MYPROJ-101");

屏幕截图

可以将屏幕截图嵌入到测试失败中。

目前仅支持 png 图像格式。

要嵌入屏幕截图,您需要使用您喜欢的 webdriver 捕获屏幕截图并将其存储在以下文件路径格式中

results/html/assets/screenshots/{{feature_name}}/{{scenario_name}}.png

feature_name 和 scenario_name 变量需要是相关项名称,不能包含空格。

以下是一个示例,说明 FeatureContext 方法将产生一个以上格式为的图像文件

        /**
         * @BeforeScenario
         *
         * @param BeforeScenarioScope $scope
         *
         */
        public function setUpTestEnvironment($scope)
        {
            $this->currentScenario = $scope->getScenario();
        }

        /**
         * @AfterStep
         *
         * @param AfterStepScope $scope
         */
        public function afterStep($scope)
        {
            //if test has failed, and is not an api test, get screenshot
            if(!$scope->getTestResult()->isPassed())
            {
                //create filename string
                $featureFolder = str_replace(' ', '', $scope->getFeature()->getTitle());

                $scenarioName = $this->currentScenario->getTitle();
                $fileName = str_replace(' ', '', $scenarioName) . '.png';

                //create screenshots directory if it doesn't exist
                if (!file_exists('results/html/assets/screenshots/' . $featureFolder)) {
                    mkdir('results/html/assets/screenshots/' . $featureFolder);
                }

                //take screenshot and save as the previously defined filename
                $this->driver->takeScreenshot('results/html/assets/screenshots/' . $featureFolder . '/' . $fileName);
            }
        }

请注意,当前场景变量需要位于类级别,并在 @BeforeScenario 方法中生成,因为 Behat 当前不支持在生成截图的 @AfterStep 方法中获取当前场景。

问题提交

当您需要额外支持或发现某些 奇怪 的事情时,请随时 创建一个新问题

许可证和作者

作者:https://github.com/roydude/BehatHtmlFormatterPlugin/contributors

待办事项

  • 考虑添加跳过和未定义的按钮。
  • 简化截图。