PHP7 擴(kuò)展之自動(dòng)化測(cè)試

在安裝 PHP7 及各種擴(kuò)展的過程中,如果你是用源碼安裝腿宰,會(huì)注意到在 make 成功之后總會(huì)有一句提示:Don't forget to run 'make test'. 這個(gè) make test 就是運(yùn)行 PHP 的自動(dòng)化測(cè)試了。

如果你剛剛安裝完 PHP7脆栋,直接運(yùn)行 make test拓春,經(jīng)過漫長(zhǎng)的等待時(shí)間之后,最終的統(tǒng)計(jì)結(jié)果大概是這樣的:


PHP7 擴(kuò)展之自動(dòng)化測(cè)試

會(huì)出現(xiàn)這么多 skip 和 fail 說明有一些擴(kuò)展你沒有安裝钦听,相關(guān)環(huán)境的配置也需要優(yōu)化

不過一般來講我們不需要運(yùn)行這么多的測(cè)試腳本洒试,尤其對(duì)單一擴(kuò)展而言,針對(duì)相關(guān)接口來測(cè)試就可以了朴上,所以我們進(jìn)一步看看如何獨(dú)立運(yùn)行測(cè)試腳本

首先打開 php 的 Makefile文件垒棋,我們看看 make test 都做了什么

test: all
        @if test ! -z "$(PHP_EXECUTABLE)" && test -x "$(PHP_EXECUTABLE)"; then \
                INI_FILE=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r 'echo php_ini_loaded_file();' 2> /dev/null`; \
                if test "$$INI_FILE"; then \
                        $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_FILE" > $(top_builddir)/tmp-php.ini; \
                else \
                        echo > $(top_builddir)/tmp-php.ini; \
                fi; \
                INI_SCANNED_PATH=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r '$$a = explode(",\n", trim(php_ini_scanne
d_files())); echo $$a[0];' 2> /dev/null`; \
                if test "$$INI_SCANNED_PATH"; then \
                        INI_SCANNED_PATH=`$(top_srcdir)/build/shtool path -d $$INI_SCANNED_PATH`; \
                        $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_SCANNED_PATH"/*.ini >> $(top_builddir)/tmp
-php.ini; \
                fi; \
                TEST_PHP_EXECUTABLE=$(PHP_EXECUTABLE) \
                TEST_PHP_SRCDIR=$(top_srcdir) \
                CC="$(CC)" \
                        $(PHP_EXECUTABLE) -n -c $(top_builddir)/tmp-php.ini $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -n -c $(top_builddir)/tmp-php.ini -d extension_dir=$(top_builddir)/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(TESTS); \
                TEST_RESULT_EXIT_CODE=$$?; \
                rm $(top_builddir)/tmp-php.ini; \
                exit $$TEST_RESULT_EXIT_CODE; \
        else \
                echo "ERROR: Cannot run tests without CLI sapi."; \
        fi

先不用管那些變量的定義,核心內(nèi)容就是下面這一句

$(PHP_EXECUTABLE) -n -c $(top_builddir)/tmp-php.ini $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -n -c $(top_builddir)/tmp-php.ini -d extension_dir=$(top_builddir)/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(TESTS);

原來自動(dòng)測(cè)試是通過執(zhí)行 PHP 源碼根目錄下的 run-tests.php來進(jìn)行的痪宰,測(cè)試腳本一般放在 tests 文件夾下

我們隨便打開 php 安裝目錄下的 ./tests/basic叼架,里面有一些 phpt 文件,這就是一個(gè)個(gè)的測(cè)試腳本了


有些腳本中的內(nèi)容很簡(jiǎn)單衣撬,001.phpt 中的內(nèi)容是這樣的

--TEST--
Trivial "Hello World" test
--FILE--
<?php echo "Hello World"?>
--EXPECT--
Hello World

下面我們來只運(yùn)行 001.phpt 試試
首先要設(shè)置一下相關(guān)環(huán)境變量乖订,指定被測(cè)試對(duì)象 PHP,這里樓主用的是安裝路徑下的
php

export TEST_PHP_EXECUTABLE=/usr/local/php7/bin/php

然后在 php 安裝根目錄下執(zhí)行

php run-tests.php ./tests/basic/001.phpt

不出意外的話就可以得到下面的結(jié)果


PHP7 擴(kuò)展之自動(dòng)化測(cè)試

這樣我們以后就可以寫一個(gè)腳本來指定要測(cè)試的 phpt具练,并統(tǒng)計(jì)出最終的結(jié)果乍构。

OneAPM for PHP 能夠深入到所有 PHP 應(yīng)用內(nèi)部完成應(yīng)用性能管理 能夠深入到所有 PHP 應(yīng)用內(nèi)部完成應(yīng)用性能管理和監(jiān)控,包括代碼級(jí)別性能問題的可見性靠粪、性能瓶頸的快速識(shí)別與追溯蜡吧、真實(shí)用戶體驗(yàn)監(jiān)控毫蚓、服務(wù)器監(jiān)控和端到端的應(yīng)用性能管理。想閱讀更多技術(shù)文章昔善,請(qǐng)?jiān)L問 OneAPM 官方技術(shù)博客元潘。

本文轉(zhuǎn)自 OneAPM 官方博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市君仆,隨后出現(xiàn)的幾起案子翩概,更是在濱河造成了極大的恐慌,老刑警劉巖返咱,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钥庇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡咖摹,警方通過查閱死者的電腦和手機(jī)评姨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萤晴,“玉大人吐句,你說我怎么就攤上這事〉甓粒” “怎么了嗦枢?”我有些...
    開封第一講書人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)屯断。 經(jīng)常有香客問我文虏,道長(zhǎng),這世上最難降的妖魔是什么殖演? 我笑而不...
    開封第一講書人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任氧秘,我火速辦了婚禮,結(jié)果婚禮上剃氧,老公的妹妹穿的比我還像新娘敏储。我一直安慰自己阻星,他們只是感情好朋鞍,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著妥箕,像睡著了一般滥酥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上畦幢,一...
    開封第一講書人閱讀 51,245評(píng)論 1 299
  • 那天坎吻,我揣著相機(jī)與錄音,去河邊找鬼宇葱。 笑死瘦真,一個(gè)胖子當(dāng)著我的面吹牛刊头,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诸尽,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼原杂,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了您机?” 一聲冷哼從身側(cè)響起穿肄,我...
    開封第一講書人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎际看,沒想到半個(gè)月后咸产,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仲闽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年脑溢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赖欣。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡焚志,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出畏鼓,到底是詐尸還是另有隱情酱酬,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布云矫,位于F島的核電站膳沽,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏让禀。R本人自食惡果不足惜挑社,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦拧簸、人聲如沸榨馁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春弊添,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捌木。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工油坝, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓澈圈,卻偏偏與公主長(zhǎng)得像彬檀,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瞬女,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容