uiii / pw-test
Requires
- php: >=5.6
- justinrainbow/json-schema: ^5.2
- symfony/console: ^3.2
- symfony/yaml: ^3.2
Requires (Dev)
- nette/tester: ^1.7
- phpunit/phpunit: ^5.7
This package is auto-updated.
Last update: 2021-01-03 23:25:13 UTC
README
Tense(测试环境设置与执行)是一个命令行工具,可以轻松地对 ProcessWire CMF 的多个版本运行测试。
您正在构建模块或模板,并需要确保它在所有支持的 ProcessWire 版本中都能正常工作?那么,Tense
就是您需要的工具。在任何测试框架中编写测试,告诉 Tense
您感兴趣的 ProcessWire 版本,它将为您完成剩余的工作。
目录
要求
- PHP 5.6 或更高版本
- Composer(https://getcomposer.org.cn)
- Git(https://git-scm.cn)
- MySQL 或 MariaDB 5.0.15 或更高版本
php.ini
用于 php
cli 命令的 php.ini
必须启用以下扩展
- curl
- gd2
- mbstring
- mysqli
- openssl
- pdo_mysql
安装
请首先设置所有 要求。
全局安装
composer global require uiii/tense
或作为项目依赖项安装
cd <your-project>
composer require --dev uiii/tense
使用
进入您 项目的根目录。
-
创建 配置 文件
tense.yml
tense init
-
运行测试
tense run
如果您已将
Tense
作为项目依赖项本地安装,请使用vendor/bin/tense
而不是tense
配置
Tense 使用 YAML 配置文件。有两种类型的配置文件
- 项目(
tense.yml
):它应包含与项目测试直接相关的选项。此配置旨在共享(VCS、...)。 - 本地(
tense.local.yml
):它应包含与机器环境设置相关的选项(数据库连接、...),覆盖项目配置中的选项。此配置 **不** 意图共享。
可以手动或通过运行以下命令交互式地创建 项目 的配置
tense init
当缺少时,本地 配置将在每个 tense run
时自动初始化。
tmpDir
可选,配置:项目,本地
存储测试所需文件(例如 ProcessWire 安装)的目录路径。
路径相对于配置文件的父目录。
默认为 .tense
db
必需,配置:本地
数据库连接参数。
它们用于创建 ProcessWire 安装的数据库,因此用户必须具有创建数据库的权限。
db.name
是数据库的名称。
示例
db: host: localhost port: 3306 user: root pass: "" name: tense
testTags
必需,配置:项目
用于测试的 ProcessWire 标签/版本的列表。
不需要精确的版本号。对于每个标签/版本,都会找到最新的匹配现有标签(例如 3.0
-> 3.0.42
)。
按指定顺序测试版本。
最低支持版本为
2.5
。
当前不支持版本
2.8
。
示例
testTags: - "2.5" - "2.6" - "2.7.1" - "3.0"
copySources
可选,配置:项目
在测试之前将源文件复制到 ProcessWire 的安装中。
这是一个具有 destination
和 source
属性的对象列表。
目标路径相对于 ProcessWire 的安装根目录。
源路径相对于配置文件的父目录。
源可以是单个字符串或字符串数组。如果源是字符串,则使用文件到文件的复制。如果源是字符串数组,则目标被视为目录,其中所有源都复制到其中。
如果源项是目录,则将其递归复制。
示例
copySources: - destination: "site/templates/HomeTemplate.php" source: "src/templates/home.php" - destination: "site/modules/Module" source: - "Libs" - "Module.module"
假设 tense.yml
在项目的根目录中,且 <project-root>/Libs
是一个目录。在这个例子中,这些文件将被复制
<project-root>/templates/home.php
到<pw-path>/site/templates/HomeTemplate.php
<project-root>/Libs/*
到<pw-path>/site/modules/Module/Libs
<project-root>/Module.module
到<pw-path>/site/modules/Module/Module.module
beforeCmd
可选,配置:项目,本地
在测试套件执行之前但安装 PW 实例和复制 源 之后要执行的命令。
这只是一个单独的命令,如果您需要运行多个命令,请将它们放入外部脚本中。
请记住,命令应该是平台无关的,因此不建议使用
.sh
或.bat
文件。最佳选项是使用 PHP,正如您在 示例 中看到的那样,但您可以使用任何其他平台无关的脚本语言。
ProcessWire 安装的路径将在
PW_PATH
环境变量中。
示例
beforeCmd: "composer install"
testCmd
必需,配置:项目
执行测试套件的命令。
ProcessWire 安装的路径将在
PW_PATH
环境变量中。
示例
testCmd: "vendor/bin/phpunit --bootstrap vendor/autoload.php tests/Test.php"
pause
可选,配置:本地
在针对 ProcessWire 实例的每个测试套件之后但清理测试运行程序之前,暂停并询问用户要做什么。
这在例如检查已安装的 ProcessWire 实例时很有用。
可能的值是
never
- 永不暂停(默认值)onFailure
- 在失败的测试套件后暂停always
- 在每个测试套件后总是暂停
故障排除
cURL错误:SSL证书问题:无法获取本地发行者证书
如果你遇到了这个错误,说明你没有正确配置PHP的curl
扩展。你可以通过以下方式解决,例如:
- 下载https://curl.haxx.se/ca/cacert.pem文件
- 将其放置在某个位置,例如PHP的安装目录中
- 编辑
php.ini
文件,并设置curl.cainfo = <绝对路径到cacert文件>