10up / wp-codeception
WordPress 插件,它集成了 Codeception PHP 测试框架,并允许您通过 WP CLI 为 WordPress 编写和运行 Codeception 测试。
Requires
- php: >=5.4.0
- codeception/codeception: 2.0.11
- composer/installers: ^1.0
- fzaninotto/faker: 1.5.*@dev
This package is not auto-updated.
Last update: 2021-05-26 07:40:52 UTC
README
这是一个 WordPress 插件,它集成了 Codeception PHP 测试框架,并允许您通过 WP CLI 为 WordPress 编写和运行 Codeception 测试。
我们正在努力支持所有 Codeception 命令。如果您发现我们尚未包含的命令,请提交一个 Pull Request!
安装
下载最新版本并解压,或使用 Git 将存储库克隆到 WordPress 安装中的新目录 wp-content/plugins/wp-codeception
。
安装所需的 node 模块和 composer 依赖项
我们将在 VVV 中运行我们的命令,因为那里已经为我们安装了 WP CLI、Node 和 Composer。
$ vagrant up
$ vagrant ssh
$ sudo apt-get install openjdk-7-jre-headless
$ cd /srv/www/yoursite/htdocs/wp-content/plugins/wp-codeception
$ composer install
$ wp plugin activate wp-codeception
之后,您将在 plugins/wp-codeception
目录中有一个新的 vendor
目录,其中包含我们依赖的所有代码库。
作为 composer 依赖项安装
有另一种安装此插件的方法。您可以将它添加为项目的 composer 依赖项。为此,请在终端运行以下命令
$ composer require 10up/wp-codeception
此命令将为您的项目安装插件及其所有依赖项。请注意,如果您已经在项目中使用了 composer/installers 依赖项,则 wp-codeception
将安装到 <PROJECT_DIR>/wp-content/plugins/wp-codeception/
文件夹中。这是因为 wp-codeception
有 wordpress-plugin
类型,将被 composer/installers
适当处理(阅读其文档以获取更多信息)。
如果您想将其作为依赖项添加到插件或主题中,您需要更新您的 composer.json
文件并告知其安装 wp-codeception
的位置。您可以通过提供如下片段中的 installer-paths
指令来实现。
{ ..., "extra": { "installer-paths": { "vendor/{$name}/": ["type:wordpress-plugin"] } }, ... }
现在,composer/installers
将知道将 WordPress 插件安装到 vendor 文件夹中。您需要执行的最终步骤是更新您的 autoload
部分,并将 wp-codeception.php
文件添加到自动加载文件列表中。
{ ..., "autoload": { "psr-X": { ... }, "files": [ ..., "vendor/wp-codeception/wp-codeception.php" ] }, ... }
安装测试套件
有关更多信息,请参阅 Codeception 引导文档。
# You'll create the test suite in your own plugin or theme directory.. $ cd /srv/www/yoursite/htdocs/wp-content/{your plugin or theme directory} $ wp codeception bootstrap
之后,您将在插件或主题目录中有一个新的 tests
目录。这是您的新测试套件,您将在这里编写所有测试。
编写测试
您可以使用三种Codeception测试框架中的任何一种来编写测试:[接受](http://codeception.com/docs/03-AcceptanceTests)、[功能](http://codeception.com/docs/04-FunctionalTests)和[单元](http://codeception.com/docs/05-UnitTests)测试。如果在新的tests
目录中查看,您将看到三个配置文件;每个测试框架一个(acceptance.suite.yml、functional.suite.yml、unit.suite.yml)。请根据需要编辑这些文件。
生成第一个测试
# You should be in the plugin or theme directory where you ran the bootstrap $ wp codeception generate-(cept|cest) (acceptance|functional|unit) MyTestName # Example $ wp codeception generate-cept acceptance LoginTest
之后,您将在插件或主题目录中有一个新文件tests/acceptance/LoginTest.php
,您可以在这里编写第一个测试。记住,任何Codeception测试都可以在这里运行!例如,您可以使用Codeception文档中提到的接受测试示例。同样,这也适用于功能测试和单元测试。
示例:编写登录接受测试
<?php // Make sure you've added your site URL to acceptance.suite.yml // @see http://codeception.com/docs/03-AcceptanceTests#PHP-Browser $I = new AcceptanceTester( $scenario ); $I->wantTo( 'Ensure WordPress Login Works' ); // Let's start on the login page $I->amOnPage( wp_login_url() ); // Populate the login form's user id field $I->fillField( 'input#user_login', 'YourUsername' ); // Popupate the login form's password field $I->fillField( 'input#user_pass', 'YourPassword' ); // Submit the login form $I->click( 'Log In' ); // Validate the successful loading of the Dashboard $I->see( 'Dashboard' );
运行您的测试
现在您已经编写了一些测试,是时候运行它们了!但首先...
Selenium
如果您创建了任何浏览器自动化/接受测试,您需要开启Selenium,同样,您可能希望测试运行完毕后关闭Selenium。
# You can run these commands from anywhere in your WordPress install $ wp selenium start # Stop Selenium when you're through $ wp selenium stop
运行
您将使用run
命令从您的插件或主题目录(您在那里运行了引导)中执行测试。我们已经实现了大多数Codeception 'run'命令的参数,但如果您发现我们遗漏了某些参数,请提交Pull Request!
# You should be in the plugin or theme directory where you ran the bootstrap
$ wp codeception run
示例:运行我们的登录测试
# You should be in the plugin or theme directory where you ran the bootstrap # Let's display verbose output $ wp codeception run -vvv Codeception PHP Testing Framework v2.0.11 Powered by PHPUnit 4.5.1 by Sebastian Bergmann and contributors. Rebuilding AcceptanceTester... Acceptance-production Tests (1) --------------------------------- Modules: WebDriver, WordPress, AcceptanceHelper ----------------------------------------------------------------- Ensure WordPress Login Works (LoginTest) Scenario: * I am on page "http://site.com/wp-login.php" * I fill field "input#user_login","YourUsername" * I fill field "input#user_pass","YourPassword" * I click "Login" * I see "Dashboard" PASSED
支持级别
存档:此项目不再由10up维护。我们不再响应与安全问题无关的问题或Pull Requests。我们鼓励感兴趣的开发商fork此项目并使其成为自己的项目!