总体来说, 是一个现代的PHP测试框架。他是由COMPOSER来进行架构组织。
二、安装下载
下载一个PHP执行器,推荐XAMPP
如果是源码安装,还需要安装composer
下载CodeCeption后,可以通过
$phar = new Phar('codecept.phar',0,'codecept.phar');
$zip = $phar->convertToData(Phar::ZIP);
对该包进行解压。解压可见源码。同样的github上有最新的源码和文档。
下载(解压)好源码之后,可以通过
php codecept.phar bootstrap
来进行初始化。初始化后会出现一个test的文件夹。其中包含了_data,_output,_support,acceptance,functional,unit等文件夹。其中包含了数据,输出,支持,web测试,功能测试以及单元测试等如果是源码安装
php codecept build
来构建整个工程,下载相应的依赖文件
然后就可以进行测试了
php codecept.phar generate:cept acceptance Welcome
三、原理
1.Composer
Composer是一个现代的PHP包管理器。类似于Node的npm。整个CodeCeption是由这个Composer来进行组织的。在composer.json里面,有该项目的要求,依赖文件以及动态加载的类等关键因素
Composer会根据里面的require项目去寻找相应的包(你可以在 https://packagist.org/ 上下载到各种 composer 包,类似于 yum、npm或者gem)。下载完composer之后,根据包加载的方式不同,会在四个文件中出现相应的映射关系,然后composer里面的
autoloader会加载这些映射关系,找到相应的类文件,从而达到组织整个系统的目的。
其中autoload_psr4,namespaces,files,classmap就是composer的命名空间,类与文件的对应关系。
autoload_real就是实现加载了自动加载类的方式。
部分autoload_real的代码:
$map = require __DIR__ . '/autoload_namespaces.php';
foreach ($map as $namespace => $path) {
$loader->set($namespace, $path);
}
$map = require __DIR__ . '/autoload_psr4.php';
foreach ($map as $namespace => $path) {
$loader->setPsr4($namespace, $path);
}
$classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) {
$loader->addClassMap($classMap);
}
$loader->register(true);
$includeFiles = require __DIR__ . '/autoload_files.php';
同时,在composer.json中有
"autoload":{
"psr-0":{
"Codeception":"src"
}
},
注:psr-0表示自动加载标准
1. PSR-0 (Autoloading Standard) 自动加载标准
2. PSR-1 (Basic Coding Standard) 基础编码标准
3. PSR-2 (Coding Style Guide) 编码风格向导
4. PSR-3 (Logger Interface) 日志接口
5. PSR-4 (Improved Autoloading) 自动加载优化标准
这样的设置。表示Codeception的命名空间对应的文件位置。如果是新添加的话,可以通过composer update进行设置。最终的结果是autoload_namespaces.php中出现
'Codeception' => array($baseDir . '/src'),
从而实现了关系映射,而不用每次都要include
总之,composer组织了CodeCeption。从而方便的引入各个库,比如我们接下来要用到webdriver
2.webdriver
webdriver是selenium的一部分。WebDriver is a tool for writing automated tests of websites. It aims to mimic the behaviour of a real user, and as such interacts with the HTML of the application.
我们执行一个web测试的流程是
从代码层面看,我们主要是启动了selenium服务器,然后对浏览器进行各种操作。
codeception利用composer加载进来了facebook的webdriver,然后利用module里面的webdriver进行封装,从而达到了操作webdriver的目的。
3.选择器
主要有三种选择器:
css选择器
XPath选择器
Dom选择器
一旦我们获取到页面之后,就可以对页面元素进行筛选,而筛选的依据,就是这三种选择器。他们均调用了
$I->click('//*[@id="post_det_top"]/a'); Xpath
$I->SeeElement('input',['id' => 'loginUserPwd']); dom
$I->SeeElement('#loginUserPwd']);CSS
可以通过对源码或者例子对选择器进行了解