首頁 >後端開發 >php教程 >PHP7 擴充之自動化測試

PHP7 擴充之自動化測試

WBOY
WBOY原創
2016-07-29 08:56:441029瀏覽

在安裝PHP7 及各種擴充的過程中,如果你是用源碼安裝,會注意到在make 成功之後總會有一句提示:Don't forget to run 'make test'. 這個make test 就是運行PHP 的自動化測試了。

如果你剛安裝完PHP7,直接運行make test,經過漫長的等待時間之後,最終的統計結果大概是這樣的:
PHP7 擴充之自動化測試
會出現這麼多skip 和fail 說明有一些擴充你沒有安裝,相關環境的配置也需要優化

不過一般來講我們不需要運行這麼多的測試腳本,尤其對單一擴展而言,針對相關接口來測試就可以了,所以我們進一步看看如何獨立運行測試腳本

首先打開php 的Makefile文件,我們來看看make test 都做了什麼

<code>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 extensi/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</code>

先不用管那些變數的定義,核心內容就是下面這句話

<code>$(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 extensi/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(TESTS);</code>

原來自動測試是透過執行PHP 原始碼根目錄下的run-tests .php來進行的,測試腳本一般放在tests 文件夾下

我們隨便打開php 安裝目錄下的./tests/basic,裡面有一些phpt 文件,這就是一個個的測試腳本了
PHP7 擴充之自動化測試

有些腳本中的內容很簡單,001.phpt 中的內容是這樣的

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

下面我們來只運行001.phpt 試試
首先要設定相關環境變量,指定被測試對象PHP,這裡樓主用的是安裝路徑下的
php

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

然後在php 安裝根目錄下執行

runrun-tests.bas

不出意外的話就可以得到下面的結果
PHP7 擴充之自動化測試

這樣我們以後就可以寫一個腳本來指定要測試的phpt,並統計出最終的結果。

OneAPM for PHP 能夠深入到所有PHP 應用內部完成應用效能管理能夠深入到所有PHP 應用程式內部完成應用效能管理和監控,包括程式碼層級效能問題的可見度、效能瓶頸的快速識別與追溯、真實使用者體驗監控、伺服器監控和端對端的應用效能管理。想閱讀更多技術文章,請造訪 OneAPM 官方技術部落格。

本文轉自 OneAPM 官方部落格

以上就介紹了PHP7 擴充之自動化測試,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn