文档章节

Yii2 Day 7: 使用codeception测试框架

_Elvis
 _Elvis
发布于 2015/03/01 10:03
字数 786
阅读 1123
收藏 3

Codeception简介

项目大了,功能多了,各种自动测试工具少不了。在Yii1的时候,一般推荐使用PHPUnit进行单元测试,用selenium进行功能和集成测试。这两个玩意虽然很强大,但是安装配置过程真是让人郁闷,Windows环境下的PEAR安装更让人吐血。本来程序员就不大自觉自愿地写测试代码了,现在连环境配置都这么费劲,谁还有兴趣啊?

事物总是发展变化的,Composer成功取代PEAR成为PHP包管理工具,测试框架方面,Codeception也在2012年推出了稳定版本,目前已经是2.x版本了。Yii2特地做了个yii2-codecept扩展,用来简化Yii2应用的测试工作。

安装

安装还是推荐用composer,方便快速,无痛苦。

<!-- lang: shell -->
composer global require "codeception/codeception=2.0.*"
composer global require "codeception/specify=*"
composer global require "codeception/verify=*"

安装好了之后,最好将composer目录下vendor/bin加到PATH里,这样运行codeception命令就很方便啦。如果安装composer,或者运行命令缓慢,可能参考教程:

安装 http://my.oschina.net/u/248080/blog/351424 更新 http://my.oschina.net/u/248080/blog/378825

初始化

安装成功后,打开要进行测试到项目,cd到项目根目录,运行命令codecept bootstrap,完成测试框架到初始化工作。

<!-- lang: shell -->
HuiMac:mf ice$ codecept bootstrap
Initializing Codeception in /Applications/XAMPP/xamppfiles/htdocs/mf

File codeception.yml created       <- global configuration
tests/unit created                 <- unit tests
tests/unit.suite.yml written       <- unit tests suite configuration
tests/functional created           <- functional tests
tests/functional.suite.yml written <- functional tests suite configuration
tests/acceptance created           <- acceptance tests
tests/acceptance.suite.yml written <- acceptance tests suite configuration
tests/_output was added to .gitignore
tests/_bootstrap.php written <- global bootstrap file
Building initial Tester classes
Building Actor classes for suites: acceptance, functional, unit
\AcceptanceTester includes modules: PhpBrowser, AcceptanceHelper
AcceptanceTester.php generated successfully. 48 methods added
\FunctionalTester includes modules: Filesystem, FunctionalHelper
FunctionalTester.php generated successfully. 13 methods added
\UnitTester includes modules: Asserts, UnitHelper
UnitTester.php generated successfully. 17 methods added

Bootstrap is done. Check out /Applications/XAMPP/xamppfiles/htdocs/mf/tests directory

初始化完毕后,在项目根目录下会多一个tests目录,目录结构如下:

tests目录结构

值得注意的是,codeception目录下,包含了各种测试的示例代码,可以参考模仿示例代码写单元测试,交付测试和功能测试。

交付测试例子

在acceptance目录下新建文件,LoginCept.php, 加入以下代码:

<!-- lang: php -->
$I = new AcceptanceTester($scenario); //创建测试实例
$I->wantTo('perform login test'); //说明测试的目的
$I->amOnPage('/web/user/login/admin'); //打开登录页面
$I->see('Admin Login'); //是否看到Admin Login的文字?
$I->see('/mf/web/user/login/admin'); //是否看到登录链接
$I->fillField('AdminLoginForm[username]','root'); //填写用户名
$I->fillField('AdminLoginForm[password]','root'); //填写密码
$I->click(['name'=>"login-button"]);//点击登录按钮
$I->see('Module Admin');//查看是否登录成功,看到管理页面

通过命令 codecept run运行测试用例,结果如下:

<!-- lang: shell -->
HuiMac:mf ice$ codecept run
Codeception PHP Testing Framework v2.0.11
Powered by PHPUnit 4.4.5 by Sebastian Bergmann.

Acceptance Tests (1) ---------------------------------------------------------------------------------------------
Perform login test (LoginCept)                                                                              Ok
------------------------------------------------------------------------------------------------------------------

Functional Tests (0) ------------------------
---------------------------------------------

Unit Tests (0) ------------------------------
---------------------------------------------


Time: 1.18 seconds, Memory: 12.25Mb

OK (1 test, 3 assertions)

1个测试用例运行成功,3次断言都是成功的,测试通过。

© 著作权归作者所有

_Elvis
粉丝 77
博文 41
码字总数 29082
作品 0
海淀
程序员
私信 提问
选择 Yii 2 框架的 7 个理由

去年,SitePoint网站发布了一篇文章重点介绍了一些顶尖的PHP开发框架。 排名第四的是Yii(发音同Yee)框架。 那时Yii框架最新的版本是1.1.14。最近,Yii 2.0版发布了,你可以在产品中使用2.0...

oschina
2014/10/16
18.4K
66
【翻译】Yii2 第2章 用Yii2创建自定义应用(第2部分)

将Yii框架引入我们的应用 现在,我们拥有了可以工作的全套基础设施,让我们回到在设计阶段时定义的第一个特性,让我们先为它写一个验收测试。 第一个端到端测试 端到端验收测试的要点就是,我...

zcgly
2015/09/29
453
1
【翻译】Yii2 第1章 开始

让我们看看,怎样以最小的代价使用Yii2创建一个站点。目的是学习使用Yii2应用模版的安装过程,并开始体验模版里提供的一系列特性。 一个基本应用 开始使用Yii2最基本和直接的方式,是使用Yii...

zcgly
2015/09/15
960
7
Codeception 2.2.9 发布,全堆栈 PHP 测试框架

Codeception 2.2.9 发布了,Codeception 是一个全堆栈的 PHP 测试框架。 测试示例: 更新内容: [Laravel5] Laravel 5.4 support [WebDriver] Added to wait for element, and run actions ......

王练
2017/02/05
578
0
【翻译】Yii2 第2章 用Yii2创建自定义应用(第1部分)

在这一章里,我们将看到Yii2怎样帮助我们创建web应用。示例虽然很简单,但整个过程都符合软件工程思想。我们将完成应用开发的每一个步骤,并且每一步都会根据权威书籍中的最佳实践来进行: ...

zcgly
2015/09/20
847
1

没有更多内容

加载失败,请刷新页面

加载更多

RxJava进行单元测试的方式

@Test public void completeTask_retrievedTaskIsComplete() { // Given a new task in the persistent repository final Task newTask = new Task(TITLE, ""); ......

SuShine
32分钟前
5
0
正则表达式大全

检验手机号码 # 要求:手机号码必须为11位数字,以1开头,第二位为1或5或8。import redef verify_mobile(): mob = input("请输入手机号码:") ret = re.match(r"1[358]\d{9}", m......

彩色泡泡糖
35分钟前
5
0
QT之border-image属性

一、border-image的兼容性 border-image可以说是CSS3中的一员大将,将来一定会大放光彩,其应用潜力真的是非常的惊人。可惜目前支持的浏览器有限,仅Firefox3.5,chrome浏览器,Safari3+支持...

shzwork
36分钟前
6
0
Kubernetes Operator简易教程

1. 安装operator-sdk //安装 operator-sdk$ apt-get install operator-sdk.....$ operator-sdk versionoperator-sdk version: v0.7.0$ go versiongo version go1.11.4 darwin/amd64 2......

Robotcl_Blog
36分钟前
5
0
再谈DAG任务分解和Shuffle RDD

1、DagScheduler分析 DagScheduler功能主要是负责RDD的各个stage的分解和任务提交。Stage分解是从触发任务调度过程的finalStage开始倒推寻找父stage,如果父stage没有提交任务则循环提交缺失...

守望者之父
42分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部