创建测试项目

  • 作者: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创建测试项目的前提条件:

  1. 将PHP目录添加到系统环境path变量中,并且确定cmd中运行php -v命令查看到的版本号是5.4或以上,小于5.4不行!

  2. 获取一个叫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增强了呢