kucek / behat-html-formatter

此软件包最新版本(v0.1.2)的许可证信息不可用。

这将创建一个用于 Behat 的 HTML 格式化器。

v0.1.2 2016-03-16 18:34 UTC

This package is not auto-updated.

Last update: 2024-09-20 18:54:12 UTC


README

Behat 3 扩展,用于从测试结果生成 HTML 报告。

Latest Stable Version Total Downloads Latest Unstable Version License

Twig 报告

Twig Screenshot

Behat 2 报告

Behat2 Screenshot

如何使用?

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

安装

先决条件

此扩展需要

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

通过 composer

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

使用 composer 安装

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

使用 composer.json 安装

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

{
    "require": {
        "behat/behat": "3.*@stable",
        "emuse/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:
    emuse\BehatHTMLFormatter\BehatHTMLFormatterExtension:
      name: html
      renderer: Twig,Behat2
      file_name: Index
      print_args: true
      print_outp: true
      loop_break: true

配置

  • output_path - Behat 将保存 HTML 报告的位置。此处定义的路径相对于 %paths.base%,如果省略,则默认设置为相同的路径。
  • renderer - Behat 将使用的渲染引擎,因此 Behat 应输出哪些类型的报告格式(允许多个报告格式,通过逗号分隔)。允许的值有
  • Behat2 - 用于生成类似于 Behat 2 生成的 HTML 报告。
  • Twig - 基于 Twig 的新颖且更现代的格式。
  • Minimal - 超级最小化的 HTML 输出。
  • file_name - (可选)Behat 将使用一个固定的文件名,并在每次构建后覆盖同一文件。默认情况下,Behat 将使用随机名称创建一个新的 HTML 文件(例如 "renderer name"_"date hour")。
  • print_args - (可选)如果设置为 true,Behat 将将每个步骤的所有参数添加到报告中。(例如表格)。
  • print_outp - (可选)如果设置为 true,Behat 将将每个步骤的输出添加到报告中。(例如异常)。
  • loop_break - (可选)如果设置为 true,Behat 将在打印场景概述时在每个执行后添加分隔换行符。

屏幕截图

存在将屏幕截图嵌入测试失败的功能。

当前仅支持 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);
            }
        }
        

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

问题提交

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

许可证和作者

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