Yii測試

當我們寫一個PHP類,我們一般會一步步或使用 die 或 echo 語句來驗證它是如何工作的。

如果我們開發一個 Web 應用程序,使用表單來進入測試數據,以確保網頁如我們預期的那樣工作。

測試過程可以被自動化。

對於長期的項目,自動測試方法是有道理的,這是因爲 -

  • 項目複雜和巨大

  • 不斷地增長

  • 項目失敗的成本過於昂貴

如果項目沒有得到複雜和相對簡單,又或者它僅僅是一個一次性的項目,那麼自動化測試就是大材小用了。

準備測試


第1步 - 安裝 Codeception 框架。運行下面的代碼。

c:\basic>composer global require "codeception/codeception"
c:\basic>composer global require "codeception/specify"
c:\basic>composer global require "codeception/verify"

步驟2 - 運行如下

c:\basic>composer global status

輸出「Changed current directory to 」如下圖所示:

Yii測試
應該加上'C:/Users/Administrator/AppData/Roaming/Composer/vendor/bin ' 到 PATH 環境變量。在本示例中,運行下面的代碼 -

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

注:windows系統可右鍵"我的電腦"=>"高級系統設置"=>"環境變量"來添加。

第3步 - 創建一個新數據庫 「yii2_basic_tests」 

第4步 - 測試 tests 目錄內運行。

C:\basic\tests>codeception/bin/yii migrate 

數據庫配置可以在這裏找到:tests/codeception/config/config.php.

第5步 - 構建測試套件通過如下命令:
Yii測試

C:\basic\tests>codecept build

Fixtures

fixtures 的主要目的是建立環境處於未知狀態,這樣測試就可以按照預期的方式運行。 Yii提供一個接近固定的框架。在Yii fixture框架中的一個關鍵概念是 fixture 對象。它代表了測試環境的特定方面。fixture 對象是 yii\test\Fixture 類的一個實例。

要定義 fixture ,應該創建一個新的類,並從 yii\test\Fixture 或 yii\test\ActiveFixture 擴展。

前者是爲通用目的會更好,而後者是特別設計用數據庫和 ActiveRecord 來工作的。

單元測試

單元測試幫助你來測試各項功能。例如,模型的功能或組件類。

第1步 - 在 tests/codeception/fixtures 目錄下創建一個新的 fixture 在 ExampleFixture.php 文件中。

第2步 - 然後,在 tests/codeception/unit/models 文件夾中創建了一個新的測試文件:ExampleTest.php 。

name = "myuser"; $m->email = "[email protected]"; $this->assertTrue($m->save()); } public function testUpdateMyUser() { $m = new MyUser(); $m->name = "myuser2"; $m->email = "[email protected]"; $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 數據庫,用戶模型是數據庫完整副本。

第3步 - 要開始測試,進入 tests 文件夾內並運行。

C:\basic\tests>codecept run unit models/ExampleTest

它應該通過所有測試。會看到如下輸出結果 -
Yii測試

功能測試


功能測試可以幫助你  -

  • 使用瀏覽器模擬器應用測試

  • 驗證功能的正常使用

  • 與數據庫進行交互

  • 將數據提交到服務器端腳本

在 tests 測試文件夾中運行 -

c:\basic\tests>codecept generate:cept functional AboutPageCept

上述命令在 tests/codeception/functional 文件夾下創建一個 AboutPageCept.php 文件。

Yii測試
在這個功能測試,我們要檢查上面的 about 頁面是否存在。

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

wantTo('perform actions and see result'); $I->amOnPage('site/about'); $I->see('about'); $I->dontSee('apple'); ?>

在上述代碼中,我們檢查是否在 about 頁面上。很顯然,我們會看到 「about」 單詞,並在頁面上沒有顯示 「apple」。

第2步 - 通過以下運行測試。

run functional AboutPageCept

將會看到下面的輸出如下 -
Yii測試