自動化REST API 測試(基於Yii2)
阿新 • • 發佈:2019-01-04
前言:
Yii2是一款非常優秀的PHP框架,Yii2的官方發行版整合了codeception測試框架。在使用Yii2框架的專案中,我們可以非常方便地利用codeception進行單元測試、功能測試、驗收測試和API測試等。現在下面主要介紹API測試
API測試主要用來測試介面
準備安裝
1、確保已經安裝了composter,沒有安裝自行安裝
2、在專案根目錄執行命令
composer require "fxp/composer-asset-plugin:*" composer require "codeception/codeception=*" composer require "codeception/specify=*" composer require "codeception/verify=*" composer require flow/jsonpath
3、下載codecept.phar檔案
連結:http://codeception.com/codecept.phar
參考:http://waqqas-blog.logdown.com/posts/261868-automated-testing-of-a-restful-api
下載好後(如果下載不好可以按照參考資料來,直接下載比較方便)將檔案放在專案的根目錄中
配置codeception
1、執行如下命令
windows:php vendor\codeception\codeception\codecept bootstrap linux: vendor\bin\codecept bootstrap
這行命令將建立一個codeception.yml檔案和test目錄(根據自己的實際目錄執行命令我的是基礎版yii)
2、修改codeception.yml,如下:
actor: Tester paths: tests: tests log: tests/_output data: tests/_data helpers: tests/_support settings: bootstrap: _bootstrap.php memory_limit: 1024M colors: true modules: config: Yii2: configFile: 'config/test.php' cleanup: false # Db: # dsn: 'mysql:host=localhost;dbname=televod' # user: 'test_televod' # password: 'test_televod' # Db是情況配置我的沒有配置
新增測試套件
1、執行如下命令
vendor\bin\codecept generate:suite api
# windwos下行首可加php
這將在tests目錄下建立api.suite.yml檔案和api目錄
2、修改api.suite.yml檔案,如下:
class_name: ApiTester
modules:
enabled: [PhpBrowser, REST]
config:
PhpBrowser:
url: http://域名
REST:
url: http://域名
depends: PhpBrowser
depends: Yii2
3、在api目錄下新增一個測試檔案
vendor\bin\codecept generate:cept api CreateUser
# 或者
vendor\bin\codecept generate:cest api CreateUser # 檔案內會自動建立測試類
4、執行如下命令構建測試
vendor\bin\codecept build
寫測試
編輯檔案CreateUserCest.php
// tests
public function tryToTest(ApiTester $I)
{
$I->sendPOST('terminal/getterminal',['page'=>1,'ter_account'=>1]);
$I->seeResponseCodeIs(\Codeception\Util\HttpCode::OK); // 200
$I->seeResponseIsJson();
// $I->seeResponseContains('"code":1');
$I -> seeResponseContainsJson( ['code'=>1] );
// $I ->dontSeeResponseContainsJson(["ter_account"=>"16678786767"]);
}
執行測試
vendor\bin\codecept run api
# api後面可指定檔名,不加會執行所有測試檔案