浅析PHP官方自动化测试方法(下)

发表于:2009-3-31 13:47

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:林容容    来源:IBM

PHP 自动化测试框架的原理和实现

  在清单 3中的运行示例中,实际的执行语句是 “ $HOME/php-5.2.8/sapi/cli/php run-tests.php $HOME/php-5.2.8/sapi/cli/tests/001.phpt ” 。其中,“ 001.phpt ” 是测试脚本;“ run-tests.php ” 为 PHP 测试的驱动脚本,是官方脚本;而 “ $HOME/php-5.2.8/sapi/cli/php ” 是运行驱动脚本的 PHP 可执行对象。这里需要指出的一点是,环境变量 TEST_PHP_EXECUTABLE 中设置的 PHP 可执行对象和这里运行测试脚本中的 “ $HOME/php-5.2.8/sapi/cli/php ” 虽然指向的是同一个可执行对象,但其意义是不一样的。环境变量 TEST_PHP_EXECUTABLE 中设置的 PHP 是被测试对象,而运行测试中使用的 “ $HOME/php-5.2.8/sapi/cli/php ” 只是为了用来驱动测试脚本运行。

  在图 1 中可以具体的看出 PHP 测试过程中两个 PHP 可执行对象及两个 PHP 脚本的关系。在测试的过程中,首先是由 “ $HOME/php-5.2.8/sapi/cli/php ” 去运行脚本 “ run-tests.php ” (第 1 步)。 在 “ run-tests.php ” 脚本中,将解析环境变量的值 “ TEST_PHP_EXECUTABLE =$HOME/php-5.2.8/sapi/cli/php ” (第 2 步)。这里 PHP 可执行对象是被测试的 PHP 。“ run-tests.php ” 脚本中还将把测试脚本 “ 001.phpt ” 中的 FILE 段解析为 PHP 脚本 “ 001.php ” (第 3 步), 用 “ TEST_PHP_EXECUTABLE ” 设置的那个 PHP 可执行对象去执行 “ 001.php ” (第 4 步)并得到实际输出结果,在比对实际输出结果和 EXPECT 段的期待结果后,输出测试结果(第 5 步)。以上运行过程可以从对 “ run-tests.php ” 脚本的分析中得出。

  图 1. PHP 测试运行关系图

  

  通过以上实例分析可以看出,PHP 官方测试的自动化主要依赖于 “ run-tests.php ” 脚本和测试用例脚本 PHPT 。而 “ run-tests.php ” 脚本正是 PHP 测试自动化框架的搭建者。从代码清单 5 中,可以略微看出 PHP 自动化测试框架的主要工作

  清单 5. PHP 自动化测试代码片段

$test_cnt = count($test_files);

  if ($test_cnt) {
   putenv('NO_INTERACTION=1');
   verify_config();
   write_information($html_output);
   usort($test_files, "test_sort");
   $start_time = time();

   if (!$html_output) {
    echo "Running selected tests.\n";
   } else {
    show_start($start_time);
   }

   $test_idx = 0;
   run_all_tests($test_files, $environment);
   $end_time = time();

   if ($html_output) {
    show_end($end_time);
   }

   if ($failed_tests_file) {
    fclose($failed_tests_file);
   }

   if (count($test_files) || count($test_results)) {
    compute_summary();
    if ($html_output) {
    fwrite($html_file, "<hr/>\n" . get_summary(false, true));
    }
    echo "=================================================";
    echo get_summary(false, false);
   }

   if ($html_output) {
    fclose($html_file);
   }

   if ($output_file != '' && $just_save_results) {
    save_or_mail_results();
   }

        if (getenv('REPORT_EXIT_STATUS') == 1 and preg_match('/FAILED(?: |$)/',   \
                    implode(' ', $test_results))) {
    exit(1);
   }

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号