单元测试,php的单元测试

利用composer格局安装yii2-app-basic
()
装好后既能够运用

动用composer形式安装yii2-app-basic
()
装好后既能够使用

本文实例讲述了Yii2单元测试用法。分享给大家供大家参考,具体如下:

codeception 和 phpunit

 

 

动用composer格局安装yii2-app-basic
()
装好后既能够应用

codecept run unit tests/unit/moTest.php –debug 在品种的根目录运营

建一个Model文件EntryForm.php在models目录下

单元测试,php的单元测试。建一个Model文件EntryForm.php在models目录下

建一个Model文件EntryForm.php在models目录下

第③步 – 安装 Codeception 框架。运维下边包车型客车代码。
使用 composer 命令
composer global require “codeception/codeception”
composer global require “codeception/specify”
composer global require “codeception/verify”
手续2 – 运营如下
ccomposer global status
出口“Changed current directory to <directory>”如下图所示:
Changed current directory to C:/Users/luky/AppData/Roaming/Composer
No local changes

 

 

<?php
namespace app\models;
use Yii;
use yii\base\Model;
class EntryForm extends Model
{
  public $name;
  public $email;
  public function rules()
  {
    return [
      [['name', 'email'], 'required'],
      ['email', 'email'],
    ];
  }
}

加上到环境变量:应该加上’C:/Users/luky/AppData/Roaming/Composer/vendor/bin
‘ 到 PATH 环境变量。在本示例中,运转上边包车型大巴代码 –
export PATH = $PATH:~/.composer/vendor/bin
注:windows系统可右键”小编的微型总括机”=>”高级系统设置”=>”环境变量”来增进。

<?php

namespace app\models;

use Yii;
use yii\base\Model;

class EntryForm extends Model
{
    public $name;
    public $email;

    public function rules()
    {
        return [
            [['name', 'email'], 'required'],
            ['email', 'email'],
        ];
    }
}
<?php

namespace app\models;

use Yii;
use yii\base\Model;

class EntryForm extends Model
{
    public $name;
    public $email;

    public function rules()
    {
        return [
            [['name', 'email'], 'required'],
            ['email', 'email'],
        ];
    }
}

建一个EntryFormTest.php放在tests/unit/models目录下

linux下codecept安装

 

 

<?php
namespace tests\models;
use app\models\EntryForm;
class EntryFormTest extends \Codeception\Test\Unit
{
  public function testValidInput()
  {
    $model = new EntryForm();
    $model->name = 'Harry Qin';
    $model->email = '15848778@qq.com';
    expect_that($model->validate());
    return $model;
  }
  public function testInvalidInput()
  {
    $model = new EntryForm();
    $model->name = 'Harry Qin';
    $model->email = 'xxyy';
    expect_not($model->validate());
    $model = new EntryForm();
    $model->name = '';
    $model->email = '15848778@qq.com';
    expect_not($model->validate());
  }
  /**
   * 下面一行表示这里输入的参数值来自testValidInput的输出
   * @depends testValidInput
   */
  public function testModelProperty($model)
  {
    expect($model->name)->equals('Harry Qin');
  }
}
**codecept: command not found
on Ubuntu then you should follow these steps:**
sudo composer global require "codeception/codeception=2.1.*" "codeception/specify=*" "codeception/verify=*"

and then run this command:
sudo ln -s ~/.composer/vendor/bin/codecept /usr/local/bin/codecept

其他~
Socodecept build
andcodecept run
will work.
**If you are using Windows then run this command:** 
composer global require "codeception/codeception=2.1.*" "codeception/specify=*" "codeception/verify=*"

Add this line into your path:
~\AppData\Roaming\Composer\vendor\bin

问题:如何将远程服务器的数据库导入到本地
步骤一:从远程服务器下载数据库
注:D:\Program Files\MySQL\MySQL Server 5.0\bin>为你安装的MYSQL安装目录,\bin为mysqldump管理工具所有在的目录;
mysqldump -h[hosname] -u[user_name] -p[password] --default-character-set=[char_set_name] [db_name] > [save_path]
eg:mysqldump -h119.12.12.11 -umysqluser -pmysqlpwd --default-character-set=utf8 dbname --skip-lock-tables> d:\sqlname.sql
步骤二:通过phpmyadmin或者其他数据库管理工具导入即可
或者命令行导入
http://jingyan.baidu.com/article/cbf0e500d15c762eab289362.html

==

指令:
codecept bootstrap
codecept build
codecept run

建一个EntryFormTest.php放在tests/unit/models目录下

建一个EntryFormTest.php放在tests/unit/models目录下

品种根目录下运作

步骤3 – 开始测试:

 

 

composer exec codecept run unit
1 用户测试模块
①:测试寻找用户id
过程:
a.已输入的id
b.判断id对应的用户名和用户名相同,并返回正确。
c.不相同,返回错误。
函数:
    public function testFindUserById()
    {
      //$user = User::findIdentity(1);
      //print_r($user);

        expect_that($user = User::findIdentity(1));
        expect($user->username)->equals('aa@cc.cc');

        expect_not(User::findIdentity(0));
    }

②:测试寻找用户token
过程:
a.已输入的token
b.判断token对应的用户名和用户名相同,并返回正确。
c.不相同,或不存在token,返回错误
函数:
public function testFindUserByAccessToken()
    {
        expect_that($user = User::findIdentityByAccessToken('asdflawejflwefadsfasdf'));
        expect($user->username)->equals('aa@cc.cc');

        expect_not(User::findIdentityByAccessToken('non-existing'));
    }

③:测试寻找用户用户名
过程:
a.判断用户对应的用户名和用户名相同,并返回正确。
b.不存在,返回错误
函数:  
public function testFindUserByUsername()
    {
        expect_that($user = User::findByUsername('aa@cc.cc'));
        expect_not(User::findByUsername('not-admin'));
    }


④:测试用户的key是否激活
过程:
a.输入用户名和用户的key,判断对应则激活。
b.判断key和username不对应,则激活失败。


c.判断用户的username和密码是否一样,一样返回正确
d.不一致,返回错误
函数:
    /**
     * @depends testFindUserByUsername
     */
    public function testActivationKey($user)
    {
        $user = User::findByUsername('dd');
        expect_that($user->findByActivationKey('awelvowaslfdf'));
        expect_not($user->findByActivationKey('test102key'));

        expect_that($user->validatePassword('abc123'));
        expect_not($user->validatePassword('123456'));
    }
<?php
namespace tests\models;

use app\models\EntryForm;

class EntryFormTest extends \Codeception\Test\Unit
{
    public function testValidInput()
    {
        $model = new EntryForm();
        $model->name = 'Harry Qin';
        $model->email = '15848778@qq.com';
        expect_that($model->validate());

        return $model;
    }

    public function testInvalidInput()
    {
        $model = new EntryForm();
        $model->name = 'Harry Qin';
        $model->email = 'xxyy';
        expect_not($model->validate());

        $model = new EntryForm();
        $model->name = '';
        $model->email = '15848778@qq.com';
        expect_not($model->validate());
    }

    /**
     * 下面一行表示这里输入的参数值来自testValidInput的输出
     * @depends testValidInput
     */
    public function testModelProperty($model)
    {
        expect($model->name)->equals('Harry Qin');
    }
}
<?php
namespace tests\models;

use app\models\EntryForm;

class EntryFormTest extends \Codeception\Test\Unit
{
    public function testValidInput()
    {
        $model = new EntryForm();
        $model->name = 'Harry Qin';
        $model->email = '15848778@qq.com';
        expect_that($model->validate());

        return $model;
    }

    public function testInvalidInput()
    {
        $model = new EntryForm();
        $model->name = 'Harry Qin';
        $model->email = 'xxyy';
        expect_not($model->validate());

        $model = new EntryForm();
        $model->name = '';
        $model->email = '15848778@qq.com';
        expect_not($model->validate());
    }

    /**
     * 下面一行表示这里输入的参数值来自testValidInput的输出
     * @depends testValidInput
     */
    public function testModelProperty($model)
    {
        expect($model->name)->equals('Harry Qin');
    }
}

输出

 

 

。。。。。。
✔ EntryFormTest: Valid input (0.00s)
✔ EntryFormTest: Invalid input (0.00s)
✔ EntryFormTest: Model property (0.00s)

类型根目录下运营

品种根目录下运维

此间全数成功了,假若测试战败,会显得具体失败音讯。

composer exec codecept run unit

composer exec codecept run unit

那边最主假若二个措施

 

 

expect_that: 假设为true
expect_not: 假设为false
expect:
即使目的对象,前面能够接verify方法,具体方法列表在vendor/codeception/verify/src/Codeception/Verify.php文件中

输出

输出

更加多关于Yii相关内容感兴趣的读者可查阅本站专题:《Yii框架入门及常用技巧总括》、《php杰出开发框架总括》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总括》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

。。。。。。

。。。。。。

企望本文所述对大家基于Yii框架的PHP程序设计具有扶助。

✔ EntryFormTest: Valid input (0.00s)
✔ EntryFormTest: Invalid input (0.00s)
✔ EntryFormTest: Model property (0.00s)

✔ EntryFormTest: Valid input (0.00s)
✔ EntryFormTest: Invalid input (0.00s)
✔ EntryFormTest: Model property (0.00s)

您大概感兴趣的稿子:

  • Yii2搭建后台并促成rbac权限决定总体实例教程
  • Yii2.0高档框架数据库增加和删除改查的一对操作
  • Yii2框架引用bootstrap中国和东瀛期插件yii2-date-picker的法子
  • Yii2使用小技巧之通过 Composer 添加 FontAwesome
    字体财富
  • yii第22中学的rules
    自定义表达规则详解
  • Yii2创制表单(ActiveForm)方法详解
  • Yii2隐藏frontend/web和backend/web的方法
  • 浅析Yii第22中学GridView常见操作
  • yii2
    页面尾部加载css和js的技能
  • Yii2怎么样批量添加数据
  • Yii2分页的应用及其扩展方法详解

 

 

此间整个中标了,假设测试退步,会展现具体失败音信。

此地整当中标了,假设测试失利,会显示具体退步音信。

 

 

那里关键是二个办法

此地重假设2个主意

 

 

expect_that: 假设为true

expect_that: 假设为true

expect_not: 假设为false

expect_not: 假设为false

expect:
假使目的对象,前边能够接verify方法,具体方法列表在vendor/codeception/verify/src/Codeception/Verify.php文件中

expect:
假如指标对象,前边能够接verify方法,具体方法列表在vendor/codeception/verify/src/Codeception/Verify.php文件中

 

 

 

 

 

 

PS:

www.30064.com ,PS:

composer exec codecept build/run 有时候会失效,原因不明。

composer exec codecept build/run 有时候会失灵,原因不明。

能够用以下命令取代

能够用以下命令取代

 

 

$ php vendor/bin/codecept build

$ php vendor/bin/codecept build

$ php vendor/bin/codecept run

$ php vendor/bin/codecept run

 

 

参考

参考

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图