创建测试项目

  • 作者: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增强了呢