创建测试项目 ¶
作者:KK
发表日期:2015.12.13
我们使用PHP的Codeception
框架进行测试开发 ¶
那个。..先给你灌点Codeception的基本知识: ¶
它的官方网站是http://codeception.com,但是你得翻墙访问 ~_~
它是开源的框架,github项目地址是https://github.com/codeception/codeception,其中本套教程是基于
2.0.9版
做教学的,如果你的是比较新的版本,则会与本教程所述的运行效果有所不同它是目前在PHP领域里最著名的测试框架,但在国内比较少传播,我也没找到多少中文资料,凭这身渣英文慢慢点划词翻译学下来的
它的测试主要包括
单元测试
,功能测试
和验收测试
三个方面,另外听说新版还有API测试
的我暂时没及时了解,其中功能测试
这个东西我学会并用了几下感觉不咋好最后弃用了,所以没有深入学习,并且没有撰写相关教程分享,要学习的话请大家自行前往官网看英文指引它的
单元测试
是基于PHPUnit进行封装
的,所有PHPUnit代码都可以迁移到它的框架内
运行而不需做任何改造,PHPUnit我相信大部分同学都了解并有一定使用,可以说要在Codeception里写单元测试你就少了很多学习成本。它的
验收测试
是通过Selenium
这个WebDriver
将类似$I->click('#btnLogin')
这样的PHP代码传达给Chrome/FireFox/IE
浏览器执行,所以如果你懂Selenium
一定程度上会方便点,但不懂也没多大关系。它会提供配置让你决定运行时要调用哪个浏览器,并且运行过程中可以动态修改配置,这样你可以轮流调用多个浏览器测试什么兼容性啥的它的。..算了,,,由于去官网要翻墙,我借到个VPN翻墙后就将官网的英文手册一页页地另存成doc文档回家慢慢看了,现在上传到百度云分享给大家,下载地址是 http://pan.baidu.com/s/1i3LJHJn,有英文文档自学能力的同学,我比较建议你直接学习英文资料,我翻译得不一定完全正确,讲得也不像他们那么细,我就把主要能用到的,并且是我学到的东西讲出来让大家学会普通的测试开发而已,深入学还是要看官网的东西
那么接下来 ¶
使用Codeception创建测试项目的前提条件:
将PHP目录添加到系统环境path变量中,并且确定
cmd
中运行php -v
命令查看到的版本号是5.4或以上,小于5.4不行!获取一个叫
codecept.phar
的文件,最好下载我共享到百度云的这个http://pan.baidu.com/s/1bnfY4Vl因为我的教程是基于
Codeception 2.0.9版
进行教学的,所以我共享的就是2.0.9版
,让测试代码运行起来就要靠这个了哦根据本教程学会后,你也可以自行前往官方网站进行下载更新的版本,但是访问官方网站需要翻墙
下载后,比如放在D盘吧,然后就确认一下cmd运行
php D:\codecept.phar -V
这个命令会输出Codeception version 2.0.9
接下来我们开始创建项目,以windows系统为例,我假设我们接下来的演示测试项目的目录就在E:\project1-tests
,并且后面我会经常称它为测试项目目录
将cpdecept.phar
放在E盘根目录下面;在E盘下手动创建project1-tests
目录
运行cmd
,输入E:
回车,这样将当前目录切换到E盘,再cd进到project1-tests
目录
执行
php codecept.phar bootstrap --namespace project1_tests
然后你就能发现测试项目目录
下有一个tests目录和一个。yml文件,就是刚才的命令生成出来的,yml是个配置文件,暂时别管它,而tests里面才是写测试代码的地方
我们以后学习过程中需要继续输入很多命令来做运行呀,配置呀,重构呀什么的,但是敲这些命令之前要先开启cmd,切换到测试项目目录
下才能开始敲
其实你只要执行
php codecept.phar bootstrap
都行,只是测试项目的命名空间会默认为叫tests
,我只是顺带教下大家如何自定义命名空间(注意命名空间不要带有-
号呀,所以我的演示命令里才写成--namespace project1_tests
而不是--namespace project1-tests
),当你有多个测试项目并有互相引用或者需要区分命名空间时,创建项目时就指定命名空间是很重要的
这样就初始化了测试项目的文件,接下来学习单元测试吧(别关掉那个cmd会话窗口哦!后面还要用的)
对了,以后写单元测试建议用这个,因为只要一个codecept.phar
就够了,装PHPUnit又要装pear什么的最讨厌了。..虽然新版也有PHPUnit.phar,但国内大家搜PHPUnit教程时基本都在教pear那套装法,phar那套用法还没在国内推广,而且这个单元测试还基于PHPUnit增强了呢