- Yii 教程
- Yii - 主页
- Yii - 概述
- Yii - 安装
- Yii - 创建页面
- Yii - 应用程序结构
- Yii - 入口脚本
- Yii - 控制器
- Yii - 使用控制器
- Yii - 使用动作
- Yii - 模型
- Yii - 小部件
- Yii - 模块
- Yii - 视图
- Yii - 布局
- Yii - 资产
- Yii - 资产转换
- Yii - 扩展
- Yii - 创建扩展
- Yii - HTTP 请求
- Yii - 响应
- Yii - URL 格式
- Yii - URL 路由
- Yii - URL 规则
- Yii - HTML 表单
- Yii - 验证
- Yii - 临时验证
- Yii - AJAX 验证
- Yii - 会话
- Yii - 使用闪存数据
- Yii - cookie
- Yii - 使用 Cookie
- Yii - 文件上传
- Yii - 格式化
- Yii - 分页
- Yii - 排序
- Yii - 属性
- Yii - 数据提供者
- Yii - 数据小部件
- Yii - 列表视图小部件
- Yii - GridView 小部件
- Yii - 活动
- Yii - 创建事件
- Yii - Behave
- Yii - 创建Behave
- Yii - 配置
- Yii - 依赖注入
- Yii - 数据库访问
- Yii - 数据访问对象
- Yii - 查询生成器
- Yii - 活动记录
- Yii - 数据库迁移
- Yii - 主题化
- Yii - RESTful API
- Yii - RESTful API 的实际应用
- Yii - 字段
- Yii - 测试
- Yii - 缓存
- Yii - 片段缓存
- Yii - 别名
- Yii - 日志记录
- Yii - 错误处理
- Yii - 身份验证
- Yii - 授权
- Yii - 本地化
- Yii-Gii
- Gii – 创建模型
- Gii – 生成控制器
- Gii – 生成模块
- Yii 有用的资源
- Yii - 快速指南
- Yii - 有用的资源
- Yii - 讨论
Yii - 测试
当我们编写 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>/vendor/bin”添加到您的 PATH 变量中。在这种情况下,运行以下代码 -
export PATH = $PATH:~/.composer/vendor/bin
步骤 3 - 创建一个名为'yii2_basic_tests'的新数据库。
步骤 4 - 在测试目录中运行。
codeception/bin/yii migrate
数据库配置可以在tests/codeception/config/config.php中找到。
步骤 5 - 通过构建测试套件。
codecept build
固定装置
夹具的主要目的是在未知状态下设置环境,以便您的测试以预期的方式运行。Yii 提供了一个近夹具框架。Yii Fixture 框架的一个关键概念是 Fixture 对象。它代表测试环境的一个特定方面。Fixture 对象是yii\test\Fixture 类的实例。
要定义固定装置,您应该创建一个新类并从 yii\test\Fixture 或 yii\test\ActiveFixture 扩展它。前者更适合通用设备,而后者专门设计用于数据库和 ActiveRecord。
单元测试
单元测试可帮助您测试各个功能。例如,模型函数或组件类。
步骤1 - 在tests/codeception/fixtures目录下的名为ExampleFixture.php的文件中创建一个新的fixture 。
<?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); } } ?>
在上面的代码中,我们定义了三个测试 -
- 测试创建我的用户,
- 测试更新我的用户,以及
- 测试删除我的用户。
我们刚刚创建了一个新用户,更新了他的名字,并试图删除他。我们根据 yii2_basic_tests 数据库管理MyUser模型,该数据库是我们真实数据库的完整副本。
步骤 3 - 要启动测试,请移至测试文件夹并运行。
codecept run unit models/ExampleTest
它应该通过所有测试。您将看到以下内容 -
功能测试
功能测试可以帮助您 -
- 使用浏览器模拟器测试应用程序
- 验证该功能是否正常工作
- 与数据库交互
- 向服务器端脚本提交数据
在测试文件夹内运行 -
generate:cept functional AboutPageCept
上面的命令在tests/codeception/function文件夹下创建AboutPageCept.php文件。在此功能测试中,我们将检查我们的“关于”页面是否存在。
步骤 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
您将看到以下输出 -