phpt測驗檔案說明
phpt檔案用于PHP的自動化測驗,這是PHP用自己來測驗自己的測驗資料用例檔案, 測驗腳本通過執行PHP原始碼根目錄下的run-tests.php,讀取phpt檔案執行測驗,
phpt檔案包含 TEST,FILE,EXPECT 等多個段落的檔案,在各個段落中,TEST、FILE、EXPECT是基本的段落, 每個測驗腳本都必須至少包括這三個段落,其中:
- TEST段可以用來填寫測驗用例的名字,
- FILE段是一個 PHP 腳本實作的測驗用例,
- EXPECT段則是測驗用例的期待值,
在這三個基本段落之外,還有多個段落,如作為用例輸入的GET、POST、COOKIE等,此類欄位最侄訓賦值給\(env變數, 比如,cookie存放在\)env['HTTP_COOKIE'],$env變數將作為用例中腳本的執行環境,一些主要段落說明如下表所示:
PHP測驗腳本中的段落說明
| :段落名 | 填充內容 | 備注 |
|---|---|---|
| TEST | 測驗腳本陳述句 | 必填段落 |
| FILE | 測驗腳本陳述句 | 必填段落,用PHP語言書寫的腳本陳述句,其執行的結果將與 EXPECT* 段的期待結果做對比, |
| ARGS | FILE 段的輸入引數 | 選填段落 |
| SKIPIF | 跳過這個測驗的條件 | 選填段落 |
| POST | 傳入測驗腳本的 POST 變數 | 選填段落,如果使用POST段,建議配合使用SKIPIF段 |
| GET | 傳入測驗腳本的 GET 變數 | 選填段落,如果使用GET段,建議配合使用SKIPIF段, |
| POST_RAW | 傳入測驗腳本的POST內容的原生值 | 選填段落,比如在做檔案上傳測驗時就需要使用此欄位來模擬HTTP的POST請求, |
| COOKIE | 傳入測驗腳本的COOKIE的值 | 選填段落,最常見的是將PHPSESSID的值傳入, |
| INI | 應用于測驗腳本的 ini 設定 | 選填段落,例如 foo=bar ,其值可通過函式 ini_get(string name_entry) 獲得, |
| ENV | 應用于測驗腳本的環境設定 | 選填段落,例如做gzip測驗,則需要設定環境HTTP_ACCEPT_ENCODING=gzip, |
| EXPECT | 測驗腳本的預期結果 相當于測驗檔案的結果 | 必填段落 |
| EXPECTF | 測驗腳本的預期結果 | 選填段落,可用函式 sscanf() 中的格式表達預期結果 EXPECT 段的變體 |
| EXPECTREGEX | 測驗腳本的正則預期結果 | 選填段落,以正則的方式包含多個預期結果,是預期結果EXPECT段的一種變體, |
| EXPECTHEADERS | 測驗腳本的預期頭部內容 | 選填段落.測驗腳本期待HTTP頭部回傳,是預期結果EXPECT段的另一種格式,驗證程序中會按頭部的欄位一一比對測驗,比如zlib擴展中,如果開啟zlib.output_compression, 則在EXPECTHEADERS中包含Content-Encoding: gzip作為預期結果, |
phpt檔案只是用例檔案,它還需要一個控制器來呼叫這些檔案,以實作整個測驗程序, PHP的測驗控制器檔案是原始碼根目錄下的run-tests.php檔案,此檔案的作用是根據傳入的引數,分析用例相關資料,執行測驗程序, 其大概程序如下:
- 分析輸入的命令列,根據引數配置相關引數,初始化各種資訊,
- 分析用例輸入引數,獲取需要執行的用例檔案串列,PHP支持指定單檔案用例執行,支持多檔案用例執行, 支持 .phpt多用例執行,支持 .phpt簡化版本多用例執行(相當于.phpt),
- 遍歷用例檔案串列,執行每一個用例,對于每個用例,PHP會具體決議測驗腳本中各個段落的含義, 清除所有上次測驗的記錄與設定將準備此次的測驗環境,并把各種中間檔案和日志檔案準備好, 然后用環境變數 TEST_PHP_EXECUTABLE 指定的 PHP 可執行物件運行實際的測驗陳述句, 最后將運行后的結果和測驗腳本中的預期結果(EXPECT*段)進行比較,如果比較結果一致,則測驗通過;如果不一致,則測驗失敗, 最后將結果資訊一一記錄到用戶設定的日志檔案中,
- 生成測驗結果,
這僅僅是執行的程序,除此之外,還有若干準備和清理作業,如,對上次測驗遺留下的環境的清理, 本次測驗所必須的環境變數的讀取與設定,對測驗引數的決議,測驗腳本名的決議,各種輸出檔案的準備等等
以測驗腳本/tests/basic/001.phpt為例:
[php]
--TEST--
Trivial "Hello World" test
--FILE--
<?php echo "Hello World"?>
--EXPECT--
Hello World
這個用例腳本只包含必填的三項,測驗控制器會執行--FILE--下面的PHP檔案, 如果最終的輸出是--EXPECT--所期望的結果則表示這個測驗通過,如果不一致,則測驗不通過, 最終這個用例的測驗結果會匯總會所有的測驗結果集中,
本文來自博客園,作者:ivanlee717,轉載請注明原文鏈接:https://www.cnblogs.com/ivanlee717/p/16845865.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/523892.html
標籤:其他
