PHP7 扩展之自动化测试

php中文网
发布: 2016-07-29 08:56:44
原创
1331人浏览过

在安装 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>
登录后复制

先不用管那些变量的定义,核心内容就是下面这一句

立即学习PHP免费学习笔记(深入)”;

<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 中的内容是这样的

SEEK.ai
SEEK.ai

AI驱动的智能数据解决方案,询问您的任何数据并立即获得答案

SEEK.ai 128
查看详情 SEEK.ai
<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 安装根目录下执行

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

不出意外的话就可以得到下面的结果
PHP7 扩展之自动化测试

这样我们以后就可以写一个脚本来指定要测试的 phpt,并统计出最终的结果。

OneAPM for PHP 能够深入到所有 PHP 应用内部完成应用性能管理 能够深入到所有 PHP 应用内部完成应用性能管理和监控,包括代码级别性能问题的可见性、性能瓶颈的快速识别与追溯、真实用户体验监控、服务器监控和端到端的应用性能管理。想阅读更多技术文章,请访问 OneAPM 官方技术博客。

本文转自 OneAPM 官方博客

以上就介绍了PHP7 扩展之自动化测试,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号