小九博客

  • 首页
  • 编程开发
  • 信息安全
  • 工具资源
  • 随笔
  • 在线工具
    • 在线图片水印
    • Json解析
    • JavaRuntimeExec
    • 加解密/编码工具集
  • 关于
小九博客
Hack The World!
  1. 首页
  2. 编程开发
  3. 正文

Codeception安装使用(一)

2018年01月22日

简介

Codeception是PHP的现代全栈测试框架。 受BDD的启发,它为您提供了一种绝对新的编写验收、功能和单元测试的方式。 由PHPUnit提供支持。

尽管TDD(测试驱动开发)受到广泛普及,但一些PHP开发人员从来没有为他们的应用程序编写自动化测试,主要是因为他们认为它很难、慢或无聊。Codeception框架是为了实际测试而开发的。 它允许以单一、连贯的方式进行编写单元、功能、集成和验收测试。

它可以称为BDD(行为驱动开发)框架。 所有的Codeception测试都以描述性方式编写。 只要看着测试本体,您就可以清楚地了解正在测试的内容以及如何进行测试。 即使是具有许多断言的复杂测试也是用简单的PHP域特定语言(DSL)编写的。

Yii2下的Codeception单元测试

因为近期开发项目一直使用Yii2框架。因此本文将介绍Yii2下的codeception的使用。
另外Codeception官方也提供了许多框架的文档。
Yii2: http://codeception.com/for/yii
Laravel: http://codeception.com/for/laravel
Wordpress: http://codeception.com/for/wordpress
Symfony: http://codeception.com/for/symfony

安装部署

1
composer require "codeception/codeception" --dev

我在安装的时候,发现Yii2已经集成了该插件,但是缺少”guzzlehttp/guzzle”依赖无法运行。于是我执行了。composer require guzzlehttp/guzzle

** 2018年1月23日 11:04:07更新一些遇到的坑:**

运行时可能会遇到各种神奇的错误,这个时候一定要注意你的PHP版本。如果是PHP7版本,记的wget http://codeception.com/codecept.phar 。 不然你将遇到各种类找到等奇奇怪怪的错误…PHP5版本wget http://codeception.com/php5/codecept.phar

因为文章时效性,具体准确链接以官方网站为准。

在测试时,如果是高级模板(yii2-advanced-template),单元测试将区分不同的目录,在backend、frontend、common分别会有一个test文件夹,用于单元测试。

如果测试后台应用,就切换到backend目录,运行codecept run。如果想测试所有,则在项目根目录运行codecept run。

  • 初始化

    1
    codecept bootstrap
  • 配置数据库

    在上面我们说过,yii2的单元测试是区分目录的,数据库配置也是单独的。

    在config目录下,会有一个test.php和test-local.php存放单元测试的配置信息。

    我们需要将backend、frontend、common目录下的config目录分别配置。其配置和main里的配置类似

     在进行单元测试的时候,最好使用单独的测试数据库,以免在进行单元测试的时候,某些操作将数据库清空。

  • 运行

    1
    codecept run

    默认是没有codecept命令的,需要配置一下。
    windows在环境变量Path里加入 D:\Path\to\project\vendor\codeception\base

    QQ截图20180122154329.jpg

    通过模板创建测试

  • generate:cept suite filename - Generates a sample Cept scenario

  • generate:cest suite filename - Generates a sample Cest test

  • generate:test suite filename - Generates a sample PHPUnit Test with Codeception hooks

  • generate:phpunit suite filename - Generates a classic PHPUnit Test

  • generate:suite suite actor - Generates a new suite with the given Actor class name

  • generate:scenarios suite - Generates text files containing scenarios from tests

  • generate:helper filename - Generates a sample Helper File

  • generate:pageobject suite filename - Generates a sample Page object

  • generate:stepobject suite filename - Generates a sample Step object

  • generate:environment env - Generates a sample Environment configuration

  • generate:groupobject group - Generates a sample Group Extension

PS:本来对这些英文进行了翻译,但是怕翻译不准确,这里还是看英文比较舒服。

  • 对自己写的Helper函数进行测试
  1. 首先创建单元测试模板。
    1
    codecept g:test unit \libraries\\DataHelper
  2. 编写测试方法
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public function testRemoveSpace()
    {
    $arr = [
    '半角空格'=>['123'=>' 123 ','你好'=>' 你好 '],
    '全角空格'=>['123'=>' 123  ','你好'=>' 你好  '],
    'Tab空格' =>['123'=>"\t123\t",'你好'=>"\t你好\t"],
    '混合空格'=>['你好,123'=>"\t      你好,123\t   "],
    ];
    foreach ($arr as $key => $list){
    foreach ($list as $k => $value){
    $result = DataHelper::removeSpace($value);
    expect('函数存在遗漏:'.$key, $result == $k)->true();
    }
    }
    }
  3. 进行单元测试
    1
    codecept run
    QQ截图20180122181453.jpg
    说明函数没有问题。我们来将函数故意写错,看一下是否可以报错。
    我们故意在半角空格处写错,发现可以报错。
    1.jpg
标签 单元测试 codeception PHPUnit Yii2
最后更新:2018年01月22日

文章评论

小九

Just For Fun

文章大纲
  1. 简介
  2. Yii2下的Codeception单元测试
    1. 安装部署
    2. 通过模板创建测试
分类目录
  • 编程开发
  • Yii2
  • 随笔
  • 工具资源
  • Django
  • 信息安全
标签聚合
CDN 容器逃逸 腾讯云COS jsdelivr getshell php框架
随机 最新 热点
随机 最新 热点
Codeception安装使用(一) 【算法】变量交换 Yii2-Editable插件【GridView编辑】 MySQL数据同步到ElasticSearch(Logstash方案)爬坑纪实 【[转]PHP资源大全】Awesome PHP 项目 常见容器漏洞总结
OpenSearch集群部署 DNSRebind攻击 MySQL数据同步到ElasticSearch(Logstash方案)爬坑纪实 自动化编排学习(一)部署篇 常见容器漏洞总结 免费CDN加速手把手教程

COPYRIGHT © 2021 小九博客 ALL RIGHTS RESERVED.