dmarenicz/behat-parallel-extension

v1.0.3 2024-06-26 18:07 UTC

This package is auto-updated.

Last update: 2024-08-26 18:34:52 UTC


README

Packagist Version License: MIT PHP Tests

简介

此扩展用于并行模式执行 Behat 3.x 测试。

Behat Parallel Runner

如果您正确地将您的应用程序与此扩展集成,则可以显著加快 Behat 测试的速度!

特性

  • 显示美观的进度条 :).
  • 扩展可以在您按 CTRL+C 时取消测试。
  • 当您在 并行场景 模式下有失败的测试时,可以使用 Behat 选项 --rerun 重新运行此测试。
  • 为每个工作进程可以设置环境变量。

主要模式

Behat Parallel Extension 可以在两种主要模式下工作

  • 并行场景,可以通过选项 --parallel-l 启用。
  • 并行功能,要启用此功能,您需要使用 behat 选项 --parallel-feature

并行功能选项不支持 --rerun 选项。

要求

PHP 兼容性

此 Behat 扩展需要 php 5.6 或更高版本。选择 php 5.6 的主要原因是能够与更多程序员分享此工具 :).

安装 Behat Parallel Extension

安装 Behat Parallel Extension 最便捷的方法是使用 Composer

有关安装 Composer 的更多信息,请参阅文档:https://getcomposer.org.cn/download/

安装

composer  require --dev dmarynicz/behat-parallel-extension

配置

您可以在您的 behat.ymlbehat.yml.dist 中激活和配置扩展。在 environments 数组中,您可以设置每个工作进程的环境变量。根据此 environments 数组,您可以运行的最大工作进程数量取决于最大值。如果您未设置 environments 数组,则可以运行任意数量的工作进程。如果定义了 environmental 数组,则最大工作进程数量为此数组的大小。

最多 4 个工作进程的示例

default:
    # ...
    extensions:
        DMarynicz\BehatParallelExtension\Extension:
          environments:
            -
              ANY_YOUR_ENV_VARIABLE: with any value
              DATABASE_URL:        mysql://db_user:db_password@127.0.0.1:3306/db_name_00?serverVersion=5.7
            -
              ANY_YOUR_ENV_VARIABLE: with any value
              DATABASE_URL:        mysql://db_user:db_password@127.0.0.1:3306/db_name_01?serverVersion=5.7
            -
              ANY_YOUR_ENV_VARIABLE: with any value
              DATABASE_URL:        mysql://db_user:db_password@127.0.0.1:3306/db_name_02?serverVersion=5.7
            -
              ANY_YOUR_ENV_VARIABLE: with any value
              DATABASE_URL:        mysql://db_user:db_password@127.0.0.1:3306/db_name_03?serverVersion=5.7

无限数量工作进程的示例

default:
    # ...
    extensions:
        DMarynicz\BehatParallelExtension\Extension: ~

SymfonyExtensionSymfony 的集成

要使用 Composer 命令安装此扩展以与 SymfonyExtensionMinkExtension 集成,请安装以下软件包

composer require --dev \
    friends-of-behat/mink \
    friends-of-behat/mink-extension \
    friends-of-behat/mink-browserkit-driver \
    friends-of-behat/symfony-extension

在您的 behat.ymlbehat.yml.dist 中配置扩展,如下例所示

default:
  suites:
    default:
      contexts:
        # Your contexts...
  extensions:
    Behat\MinkExtension:
      sessions:
        symfony:
          symfony: ~
    FriendsOfBehat\SymfonyExtension:
      # for symfony 5.3+ with symfony/runtime installed by composer command
      bootstrap: tests/bootstrap.php
      # for symfony versions older than 5.3
      #bootstrap: config/bootstrap.php

    DMarynicz\BehatParallelExtension\Extension:
      environments:
        - DATABASE_URL: "sqlite:///%%kernel.project_dir%%/var/data_test1.db"
          # doc for APP_CACHE_DIR https://symfony.ac.cn/doc/current/configuration/override_dir_structure.html#override-the-cache-directory
          APP_CACHE_DIR: "var/cache1"
          # SYMFONY_DOTENV_VARS does not have symfony's docs but without this tests will ignore env vars like DATABASE_URL, APP_CACHE_DIR and tests will not work
          SYMFONY_DOTENV_VARS:
        - DATABASE_URL: "sqlite:///%%kernel.project_dir%%/var/data_test2.db"
          APP_CACHE_DIR: "var/cache2"
          SYMFONY_DOTENV_VARS:
        - DATABASE_URL: "sqlite:///%%kernel.project_dir%%/var/data_test3.db"
          APP_CACHE_DIR: "var/cache3"
          SYMFONY_DOTENV_VARS:
        - DATABASE_URL: "sqlite:///%%kernel.project_dir%%/var/data_test4.db"
          APP_CACHE_DIR: "var/cache4"
          SYMFONY_DOTENV_VARS:

tests/bootstrap.php 中,对于 Symfony 5.3+,您需要具有

<?php

use Symfony\Component\Dotenv\Dotenv;

require_once dirname(__DIR__) . '/vendor/autoload_runtime.php';
(new Dotenv())->bootEnv(dirname(__DIR__) . '/.env');

完整示例可在 https://github.com/Daniel-Marynicz/BehatParallelExtension-IntegrationWithSymfony-Example 获得

用法

使用 --parallel-l 选项以并行场景模式启动。或者使用 --parallel-feature 以并行功能模式启动。您可以选择指定这些模式中的并发工作进程数量。以下示例已启用 --colors 选项

$ vendor/bin/behat -l 8 --colors
Starting parallel scenario tests with 8 workers
 Feature: Parallel
  Scenario: Test behat tests with failed result
 3/3 [============================] 100% 12 secs/12 secs
$ vendor/bin/behat --parallel-feature 8 --colors
Starting parallel scenario tests with 8 workers
 Feature: Parallel
  Scenario: Test behat tests with failed result
 3/3 [============================] 100% 12 secs/12 secs

工具和编码规范

该扩展使用以下编码标准和质量工具

Doctrine 编码标准

带有针对 PHP 5.6 兼容性的某些例外情况的 Doctrine 编码标准Doctrine 编码标准 是一套针对 PHP_CodeSniffer 的规则。它基于 PSR-1PSR-12,有一些明显的例外/差异/扩展。

有关 Doctrine 编码标准的更多信息,请参阅文档

https://www.doctrine-project.org/projects/doctrine-coding-standard/en/latest/reference/index.html#introduction

PHPStan

PHPStan 是一个用于自动测试业务预期的 PHP 框架。PHPStan 专注于在不实际运行代码的情况下查找代码中的错误。即使在编写测试之前,它也能捕获整个类别的错误。在运行实际代码行之前,它可以将 PHP 接近编译语言,因为可以检查每一行代码的正确性。

PHPUnit

PHPUnit 是一个 PHP 测试框架,测试位于目录 tests

Behat

您可以在目录 Behat 中找到测试,在 features 目录中,以及在 tests/fixtures 目录中找到一些用于 behat 测试的类。在目录 tests/Behat 中也有一些 behat 测试的类。