dmarenicz / behat-parallel-extension
Behat 的并行扩展
Requires
- php: >=7.2
- behat/behat: ^3.6
- symfony/console: ^2.7.52 || ^2.8.33 || ^3.3.15 || ^3.4.3 || ^4.0 || ^5.0 || ^6.0 || ^7.0
- symfony/dependency-injection: ^2.7.52 || ^3.0 || ^4.0 || ^4.1.12 || ^5.0 || ^6.0 || ^7.0
- symfony/event-dispatcher: ^2.7.52 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0
- symfony/expression-language: ^2.7.52 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0
- symfony/process: ^2.7.52 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0
- symfony/serializer: ^2.7.52 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0
- symfony/yaml: ^2.7.52 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0
Requires (Dev)
- ext-json: *
- dg/bypass-finals: ^1.1 || ^1.2
- phpunit/phpunit: ^8.5 || ^9.0
README
简介
此扩展用于并行模式执行 Behat 3.x 测试。
如果您正确地将您的应用程序与此扩展集成,则可以显著加快 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.yml
或 behat.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: ~
与 SymfonyExtension 和 Symfony 的集成
要使用 Composer 命令安装此扩展以与 SymfonyExtension 和 MinkExtension 集成,请安装以下软件包
composer require --dev \ friends-of-behat/mink \ friends-of-behat/mink-extension \ friends-of-behat/mink-browserkit-driver \ friends-of-behat/symfony-extension
在您的 behat.yml
或 behat.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-1 和 PSR-12,有一些明显的例外/差异/扩展。
有关 Doctrine 编码标准的更多信息,请参阅文档
PHPStan
PHPStan 是一个用于自动测试业务预期的 PHP 框架。PHPStan 专注于在不实际运行代码的情况下查找代码中的错误。即使在编写测试之前,它也能捕获整个类别的错误。在运行实际代码行之前,它可以将 PHP 接近编译语言,因为可以检查每一行代码的正确性。
PHPUnit
PHPUnit 是一个 PHP 测试框架,测试位于目录 tests
Behat
您可以在目录 Behat 中找到测试,在 features 目录中,以及在 tests/fixtures 目录中找到一些用于 behat 测试的类。在目录 tests/Behat 中也有一些 behat 测试的类。