验收测试 - 扩展(模块)

  • 作者:KK

  • 发表日期:2015.12.13


和单元测试一样,test/acceptance.suite.yml里的modules - enabled里面是验收测试的模块配置

于是你一看配置文件也就知道了,验收测试用了PhpBrowserAcceptanceHelper这两个模块,而AcceptanceHelper就是_support目录下的AcceptanceHelper,默认是个空类


增加自己的测试方法

那当然就是像《扩展单元测试》那样,对自带的tests/_support/AcceptanceHelper.php这里的类做编辑,添加你想要的方法咯,比如我添加这样一个方法:

public function login($username, $password){
	$browser = $this->getModule('PhpBrowser');	//要先取出浏览器模块,这个模块必须是yml里已经配置了的,否则get出个null
	$browser->amOnPage('/login.html');	//其实前面验收测试用例的$I调用的就是PhpBrowser模块的方法,这里直接用browser来调用效果是一样的
	$browser->see('登陆', '#loginForm');
	$browser->fillField('username', 'test1');
	$browser->fillField('password', '121212');
	$browser->fillField('verify', '121212');
	$browser->submitForm('#loginForm');
	$browser->see('会员中心', '#position');
}

然后用重构一下测试器,这里它会同时将单元测试的Tester也一起重新构造,尽管你没对单元测试的模块做改变

然后可以看到tests/acceptance/AccepanceTester.php里多了一个login($username, $password)方法

那么你的测试用例可以这样写了:

use project1_tests\AcceptanceTester;
$I = new AcceptanceTester($scenario);
$I->login();
$I->amOnPage('/friends');	//假设去好友查看页面
$I->see('可能认识的人');	//假设去商店
$I->see('下一页');	//断言有下一页按钮
$I->seeNumberOfElements('#friends li', 20);	//断言好友列表里有20个
//....更多登陆后才能做的断言

于是,你也能封装更多更多的方法到Helper里了