Stories

Detail Return Return

YII2 + Codeception +Xdebug 進行接口API測試及單元測試的實踐 - Stories Detail

 以前用測試接口就是用PostMan + PHPStorm + Xdebug 進行調試,具體就是配置好PHPStorm+
 Xdebug後,用PostMan發送請求時,增加參數:XDEBUG_SESSION_START=PHPSTORM。如下圖:
 

image.png

PostMan+Xdebug的方式測試基本也可以了,但是測試粒度還是有點大,每次測試都要正兒八經用
postman發一次請求來驗證結果,稍顯麻煩。

現在新公司用的框架是Yii2.0框架,看文檔時發現Yii2.0框架集成了Codeception單元測試,最早的時
候網上查PHP單元測試,很多大神説PHP開發基本沒人用單元測試,於是也就沒去了解,所以一直就是用
Postman測試,自己也在網上出於好奇心也看看PHP單元測試的教程,大都是簡單的Assert.equel或者
是Assert.isEmpty這種判斷是否等於結果值或者是否等於空的舉例而已,感覺沒什麼意意,也就放棄了,
直到前天正兒八經的去想着單元測試能否把結果打印出來,而不是簡單斷言,於是就去研究Yii2集成的
Codeception單元測試框架,但是無論是官網上文檔還是網上網友的帖子都是簡單介紹,沒有我期望的內
容,沒辦法只能埋頭苦幹,於是得貨了,分享出來,希望跟我一樣菜的需要“工欲善必先利其器”的菜鳥們
能得到幫助。

先用Composer安裝Codeception,Yii2官網有介紹,安裝後如下圖:

image.png

安裝好之後,當然配置Codeception方式執行測試了,如下圖:

image.png

為PHPStorm配置Codeception,如下圖:

image.png

這我寫的一個接口需要調用的方法,裏面是用Yii2框架的HttpClient發送http請求獲取攜程的Token,
現在我想對我這個方法進行測試,而不是把調用這個方法的接口寫好再用PostMan來測試。先在要測試
的方法所在類的類名處右鍵,new一個單元測試類,選Codeception,選擇測試的方法,如下圖:

image.png

image.png

會在Tests 目錄下的unit目錄生成對象的測試類,類名以要測試的類加後綴“Test”結尾。如下圖

image.png

我在測試方法裏打個斷點,如圖

image.png

在測試類的測試方法左上角有個綠色三角形按鈕,點擊,選擇用Codeception測試。如圖:

image.png

點擊測試後,會運行到剛剛打斷點的地方,接下去就可以從容的單步單元測試調試了。

image.png

我最初本來嘗試測試的時候用Yii2日誌功能寫日誌,後面發現始終沒有去寫日誌,也是偶然發現可以用Xdebug單步調試,經過單步調試,Codecetion調用的Logger類是它自己的,雖然我配置了Yii2框架的Log組件,如圖:

image.png

經過Xdebug的單步調試,通過Codeception單元測試,發現調用Yii2的Log最終調用的是Codeception包裏的一個Debug類,如下圖,注意看類的註釋説明,寫明瞭此類會在--debug模式下起作用(紅框裏英文註釋)。

image.png

用命令行的方式執行單元測試,加上--debug選項,會直接打印出想要用Yii2寫日誌文件的內容。如下圖:

image.png

image.png

本來邊研究的時候就應該記錄,無奈今天和老婆吵架心煩意亂突然想起要開始嘗試着去分享東西了,這才想
起把前兩天自己的成果分享出來,圖片和素材都是臨時操作截圖補的,還有這個是結合Yii2的單元測試而已,
其他框架的應該也類似,感覺寫東西還蠻有意思的,雖然要花不少時間,第一次寫東西。

Add a new Comments

Some HTML is okay.