📅  最后修改于: 2020-10-16 07:27:40             🧑  作者: Mango
在编写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
输出为“将当前目录更改为<目录>”。您应该将“ <目录> / 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夹具框架的关键概念是夹具对象。它代表测试环境的特定方面。夹具对象是yii \ test \ Fixture类的实例。
要定义一个灯具,您应该创建一个新类并从yii \ test \ Fixture或yii \ test \ ActiveFixture扩展它。前者更适合通用夹具,而后者则专门设计用于数据库和ActiveRecord。
单元测试可帮助您测试各个功能。例如,模型函数或组件类。
步骤1-在tests / codeception / fixtures目录下的ExampleFixture.php文件中创建一个新的fixture。
步骤2-然后,在tests / codeception / unit / models文件夹中创建一个名为ExampleTest.php的新测试文件。
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-要开始测试,请移至tests文件夹并运行。
codecept run unit models/ExampleTest
它应该通过所有测试。您将看到以下内容-
功能测试可以帮助您-
在测试文件夹内运行-
generate:cept functional AboutPageCept
上面的命令在tests / codeception / functional文件夹下创建AboutPageCept.php文件。在此功能测试中,我们将检查关于页面是否存在。
步骤1-修改AboutPageCept.php文件。
wantTo('perform actions and see result');
$I->amOnPage('site/about');
$I->see('about');
$I->dontSee('apple');
?>
在上面给出的代码中,我们检查了是否在About页面上。显然,我们应该在页面上看到“关于”这个词,而没有看到“苹果”。
步骤2-通过运行测试。
run functional AboutPageCept
您将看到以下输出-