Yii Testing测试

Yii Testing测试

当我们编写一个PHP类时,我们逐步调试或使用die或echo语句来验证其工作方式。如果我们开发一个Web应用程序,我们在表单中输入测试数据以确保页面按照我们的预期工作。这个测试过程可以自动化进行。

自动化测试方法对于长期项目是有意义的,这些项目具有以下特点:

  • 复杂且庞大
  • 不断增长
  • 以错误成本来衡量非常昂贵

如果你的项目没有变得复杂,或者相对简单,或者只是一个一次性项目,那么自动化测试可能会过度。

测试准备工作

步骤1 − 安装Codeception框架。运行以下代码。

composer global require "codeception/codeception = 2.0.*"
composer global require "codeception/specify = *"
composer global require "codeception/verify = *"

步骤2 - 运行以下命令。

composer global status

输出结果是“当前目录已更改为<directory>。你应该将<directory>/vendor/bin添加到你的PATH变量中。在这种情况下,运行以下代码:

export PATH = $PATH:~/.composer/vendor/bin

步骤3 − 创建一个名为 ‘yii2_basic_tests’ 的新数据库。

步骤4 − 在tests目录中运行。

codeception/bin/yii migrate

数据库配置可以在 tests/codeception/config/config.php 中找到。

步骤5 - 通过以下方式构建测试套件。

codecept build

固定设备

固定设备的主要目的是在未知状态下设置环境,以使您的测试以预期的方式运行。Yii提供了一个接近固定设备框架的工具。Yii固定设备框架的一个关键概念是固定设备对象。它代表测试环境的特定方面。固定设备对象是 yii\test\Fixture类 的一个实例。

要定义一个固定设备,您应该创建一个新的类,并从yii\test\Fixture或yii\test\ActiveFixture扩展它。前者适用于通用固定设备,而后者专门设计用于与数据库和ActiveRecord一起使用。

单元测试

单元测试帮助您测试单个函数。例如,模型函数或组件类。

步骤1 - 在 tests/codeception/fixtures 目录下创建一个名为 ExampleFixture.php 的新固定设备文件。

<?php
   namespace app\tests\codeception\fixtures;
   use yii\test\ActiveFixture;
   class ExampleFixture extends ActiveFixture {
      public $modelClass = ‘app⊨’MyUser';
   }
?>

步骤2 - 接下来,在tests/codeception/unit/models文件夹中创建一个名为ExampleTest.php的新测试文件。

<?php
   namespace tests\codeception\unit\models;
   use app\models\MyUser;
   use yii\codeception\TestCase;
   class ExampleTest extends TestCase {
      public function testCreateMyUser() {
         m = new MyUser();m->name = "myuser";
         m->email = "myser@email.com";this->assertTrue(m->save());
      }
      public function testUpdateMyUser() {m = new MyUser();
         m->name = "myuser2";m->email = "myser2@email.com";
         this->assertTrue(m->save());
         this->assertEquals("myuser2",m->name);
      }
      public function testDeleteMyUser() {
         m = MyUser::findOne(['name' => 'myuser2']);this->assertNotNull(m);
         MyUser::deleteAll(['name' =>m->name]);
         m = MyUser::findOne(['name' => 'myuser2']);this->assertNull($m);
      }
   }
?>

在上面的代码中,我们定义了三个测试 –

  • testCreateMyUser,
  • testUpdateMyUser,和
  • testDeleteMyUser。

我们刚刚创建了一个新用户,更新了他的名字,并试图删除他。我们根据 yii2_basic_tests 数据库管理 MyUser 模型,这是我们真实数据库的一个完整副本。

步骤3 - 要开始进行测试,进入 tests 文件夹并运行。

codecept run unit models/ExampleTest

它应该通过所有的测试。您将会看到以下内容−
Yii Testing测试

功能测试

功能测试可以帮助您进行以下操作:

  • 使用浏览器模拟器对应用程序进行测试
  • 验证功能正常工作
  • 与数据库进行交互
  • 将数据提交给服务器端脚本

在测试文件夹内执行以下操作:

generate:cept functional AboutPageCept

上述命令在 tests/codeception/functional 文件夹下创建了 AboutPageCept.php 文件。在这个功能测试中,我们将检查我们的 about 页面是否存在。

步骤1 - 修改 AboutPageCept.php 文件。

<?php
   I = new FunctionalTester(scenario);
   I->wantTo('perform actions and see result');I->amOnPage('site/about');
   I->see('about');I->dontSee('apple');
?>

在上述给定的代码中,我们检查了是否在关于页面上。显然,我们在页面上应该看到单词 ‘about’ ,而不是 ‘apple’。

步骤2 - 通过运行测试。

run functional AboutPageCept

你将会看到以下输出 −

Yii Testing测试

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程