phpt文件用于PHP的自動(dòng)化測(cè)試,這是PHP用自己來測(cè)試自己的測(cè)試數(shù)據(jù)用例文件。 測(cè)試腳本通過執(zhí)行PHP源碼根目錄下的run-tests.php,讀取phpt文件執(zhí)行測(cè)試。
10年積累的成都做網(wǎng)站、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有石鼓免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
phpt文件包含 TEST,F(xiàn)ILE,EXPECT 等多個(gè)段落的文件。在各個(gè)段落中,TEST、FILE、EXPECT是基本的段落, 每個(gè)測(cè)試腳本都必須至少包括這三個(gè)段落。其中:
在這三個(gè)基本段落之外,還有多個(gè)段落,如作為用例輸入的GET、POST、COOKIE等,此類字段最終會(huì)賦值給\(env變量。 比如,cookie存放在\)env['HTTP_COOKIE'],$env變量將作為用例中腳本的執(zhí)行環(huán)境。一些主要段落說明如下表所示:
PHP測(cè)試腳本中的段落說明
:段落名 | 填充內(nèi)容 | 備注 |
---|---|---|
TEST | 測(cè)試腳本語句 | 必填段落 |
FILE | 測(cè)試腳本語句 | 必填段落。用PHP語言書寫的腳本語句。其執(zhí)行的結(jié)果將與 EXPECT* 段的期待結(jié)果做對(duì)比。 |
ARGS | FILE 段的輸入?yún)?shù) | 選填段落 |
SKIPIF | 跳過這個(gè)測(cè)試的條件 | 選填段落 |
POST | 傳入測(cè)試腳本的 POST 變量 | 選填段落。如果使用POST段,建議配合使用SKIPIF段 |
GET | 傳入測(cè)試腳本的 GET 變量 | 選填段落。如果使用GET段,建議配合使用SKIPIF段。 |
POST_RAW | 傳入測(cè)試腳本的POST內(nèi)容的原生值 | 選填段落。比如在做文件上傳測(cè)試時(shí)就需要使用此字段來模擬HTTP的POST請(qǐng)求。 |
COOKIE | 傳入測(cè)試腳本的COOKIE的值 | 選填段落。最常見的是將PHPSESSID的值傳入。 |
INI | 應(yīng)用于測(cè)試腳本的 ini 設(shè)置 | 選填段落。例如 foo=bar 。其值可通過函數(shù) ini_get(string name_entry) 獲得。 |
ENV | 應(yīng)用于測(cè)試腳本的環(huán)境設(shè)置 | 選填段落。例如做gzip測(cè)試,則需要設(shè)置環(huán)境HTTP_ACCEPT_ENCODING=gzip。 |
EXPECT | 測(cè)試腳本的預(yù)期結(jié)果 相當(dāng)于測(cè)試文件的結(jié)果 | 必填段落 |
EXPECTF | 測(cè)試腳本的預(yù)期結(jié)果 | 選填段落??捎煤瘮?shù) sscanf() 中的格式表達(dá)預(yù)期結(jié)果 EXPECT 段的變體 |
EXPECTREGEX | 測(cè)試腳本的正則預(yù)期結(jié)果 | 選填段落。以正則的方式包含多個(gè)預(yù)期結(jié)果,是預(yù)期結(jié)果EXPECT段的一種變體。 |
EXPECTHEADERS | 測(cè)試腳本的預(yù)期頭部內(nèi)容 | 選填段落.測(cè)試腳本期待HTTP頭部返回,是預(yù)期結(jié)果EXPECT段的另一種格式。驗(yàn)證過程中會(huì)按頭部的字段一一比對(duì)測(cè)試,比如zlib擴(kuò)展中,如果開啟zlib.output_compression, 則在EXPECTHEADERS中包含Content-Encoding: gzip作為預(yù)期結(jié)果。 |
phpt文件只是用例文件,它還需要一個(gè)控制器來調(diào)用這些文件,以實(shí)現(xiàn)整個(gè)測(cè)試過程。 PHP的測(cè)試控制器文件是源碼根目錄下的run-tests.php文件。此文件的作用是根據(jù)傳入的參數(shù),分析用例相關(guān)數(shù)據(jù),執(zhí)行測(cè)試過程。 其大概過程如下:
這僅僅是執(zhí)行的過程,除此之外,還有若干準(zhǔn)備和清理工作,如,對(duì)上次測(cè)試遺留下的環(huán)境的清理, 本次測(cè)試所必須的環(huán)境變量的讀取與設(shè)置,對(duì)測(cè)試參數(shù)的解析,測(cè)試腳本名的解析,各種輸出文件的準(zhǔn)備等等
以測(cè)試腳本/tests/basic/001.phpt為例:
[php]
--TEST--
Trivial "Hello World" test
--FILE--
--EXPECT--
Hello World
這個(gè)用例腳本只包含必填的三項(xiàng)。測(cè)試控制器會(huì)執(zhí)行--FILE--下面的PHP文件, 如果最終的輸出是--EXPECT--所期望的結(jié)果則表示這個(gè)測(cè)試通過,如果不一致,則測(cè)試不通過, 最終這個(gè)用例的測(cè)試結(jié)果會(huì)匯總會(huì)所有的測(cè)試結(jié)果集中。