1、Download
本文通过composer进行安装,故在下载codeception前需先下载composer包。在web应用根目录下执行命令:
curl -sS https://getcomposer.org/installer | php
然后在web应用程序根目录下,执行以下命令进行下载:
wget http://codeception.com/codecept.phar
通过composer进行安装:
php composer.phar require "codeception/codeception:*"
ps:
此时会出现“Do not run Composer as root/super user! See https://getcomposer.org/root for details
”的报错,可以忽略,等待一小会之后会继续安装
在当前目录下,执行:
php codecept.phar bootstrap
此时可以看到codeception.yml 文件和 tests目录,Codeception 将会生成unit, functional, 和 acceptance三个部分,在tests目录会看到有三个配置文件和三个名称与之对应的目录。如图所示:
至此,codeception已经安装完毕,接下来我们看下简单的实际应用。
2、Using
默认测试会被写成叙述式的场景,创建的场景的PHP文件必须以Cept
后缀命名。
现在我们创建一个文件 tests/acceptance/SigninCept.php
我们可以通过以下的命令:
$ php codecept.phar generate:cept acceptance Signin
一个场景总是从Actor类初始化开始,接着,在场景中输入类似以 $I->
接着从自动完成列表里选择一个合适的行为。
php $I = new AcceptanceTester($scenario); ?>
将设我们有一个'login'页面,让我们登录到我们的页面通过用户名密码进行身份验证,然后我们到一个有Hello, %username%
这样文本的页面,让我们来看看在Codeception里怎么写这个场景。
php $I = new AcceptanceTester($scenario); $I->wantTo('log in as regular user'); $I->amOnPage('/login'); $I->fillField('Username','davert'); $I->fillField('Password','qwerty'); $I->click('Login'); $I->see('Hello, davert'); ?>
在执行这个测试之前,我们应该确保网站正在本地服务器上运行着。我们打开tests/acceptance.suite.yml
配置文件将URL参数替换为你的web应用程序的访问URL:
class_name: AcceptanceTester modules: enabled: - PhpBrowser: url: 'http://myappurl.local' - HelperAcceptance
配置好URL后用 run
命令运行测试:
$ php codecept.phar run
这里我们会看到类似的输出:
Acceptance Tests (1) ------------------------------- Trying log in as regular user (SigninCept.php) Ok ---------------------------------------------------- Functional Tests (0) ------------------------------- ---------------------------------------------------- Unit Tests (0) ------------------------------------- ---------------------------------------------------- Time: 1 second, Memory: 21.00Mb OK (1 test, 1 assertions)
让我们获取详细的输出:
$ php codecept.phar run acceptance --steps
我们应该看到一步一步的行为报告。
Acceptance Tests (1) ------------------------------- Trying to log in as regular user (SigninCept.php) Scenario: * I am on page "/login" * I fill field "Username" "davert" * I fill field "Password" "qwerty" * I click "Login" * I see "Hello, davert" OK ---------------------------------------------------- Time: 0 seconds, Memory: 21.00Mb OK (1 test, 1 assertions)
这个简单的测试可以扩展到一个完整的场景使用场景。 所以,通过模拟用户的行为,我们可以测试我们的任何一个网站。