你在这里

通过命令行执行测试

原文链接http://drupal.org/node/645286

命令行执行测试--linux平台

本章节供那些希望或者需要命令行来运行测试套件者阅读。这方法会经常用到在,比如当想整合第三方系列工具,的时候。当你只希望做小规模的,测试一个或几个模块式式,我希望本页面能收集测试方面的信息和技巧。

对于想通过GUI来运行SImpletest的开发者,请阅读Simpletest指南 ; 深入阅读指南,你会发现通过Durpal用户界面来运行测试的一些信息。通过drupal界面以命令行访问Simpletest的两个重要链路是admin/config/development/testing/ and admin/config/development/testing/results。

位于/scripts下有个run-tests.sh的帮助文件,它使在Drupal中,通过命令行执行测试变得非常容易。你可以作为web服务器端用户,去站点的根目录下,执行php scripts/run-tests.sh,就可以很容易地执行测试套件。

如果你不喜欢每次都输入/scripts/run-test.sh,在你的路径下如果存在bin目录,则可以在~/bin目录下建一个symlink符号连接,如下显示:

ln -s scripts/run-tests.sh ~/bin

运行不带参数的脚本可以弹出帮助页面,并给出option列表。

下面我们来全面地展开run-scripts.sh:

www-data@dev:/var/www-drupal-7-head$ php scripts/run-tests.sh

Run Drupal tests from the shell.

Usage:        run-tests.sh [OPTIONS] <tests>
Example:      run-tests.sh Profile

All arguments are long options.

  --help      Print this page.

  --list      Display all available test groups.

  --clean     Cleans up database tables or directories from previous, failed,
              tests and then exits (no tests are run).

  --url       Immediately preceeds a URL to set the host and path. You will
              need this parameter if Drupal is in a subdirectory on your
              localhost and you have not set $base_url in settings.php.

  --php       The absolute path to the PHP executable. Usually not needed.

  --concurrency [num]

              Run tests in parallel, up to [num] tests at a time. This requires
              the Process Control Extension (PCNTL) to be compiled in PHP, not
              supported under Windows.

  --all       Run all available tests.

  --class     Run tests identified by specific class names, instead of group names.

  --file      Run tests identified by specific file names, instead of group names.
              Specify the path and the extension (i.e. 'modules/user/user.test').

  --xml <path>

              If provided, test results will be written as xml files to this path

  --color     Output the results with color highlighting.

  --verbose   Output detailed assertion messages in addition to summary.

  <test1>[,<test2>[,<test3> ...]]

              One or more tests to be run. By default, these are interpreted
              as the names of test groups as shown at
              ?q=admin/config/development/testing.
              These group names typically correspond to module names like "User"
              or "Profile" or "System", but there is also a group "XML-RPC".
              If --class is specified then these are interpreted as the names of
              specific test classes whose test methods will be run. Tests must
              be separated by commas. Ignored if --all is specified.

To run this script you will normally invoke it from the root directory of your
Drupal installation as the webserver user (differs per configuration), or root:

sudo -u [wwwrun|www-data|etc] php ./scripts/run-tests.sh  --url http://example.com/ --all
sudo -u [wwwrun|www-data|etc] php ./scripts/run-tests.sh  --url http://example.com/ --class UploadTestCase

用Drush来实现命令行执行测试--Linux平台

Drush后面跟一些命令可以来协助测试:

drush test mail : 运行测试套件,将结果发送到站点邮件.
drush test clean: 清除测试套件表和遗留的文件.
drush test drush : 测试drush (似乎只对drush有效)。

请阅读代码。本页浅表性地介绍地执行测试的脚本可以扩展,并可按自己的想法重复使用。

友好建议:

  • 确保你是以web服务器端用户来运行测试。
  • 如果你是通过远程shell在CLI上运行测试,screen(1) 实用工具对于长时间的测试会话很有效
  • Xdebug扩展可能和有些测试有冲突。
  • 或者禁用Xdebug,或在php.ini文件中[xdebug]下添加 xdebug.max_nesting_level=500.

命令行执行测试--Windows平台

Windows用户没有现成的.bat文件来容易地实现命令行测试。我认为编译一个.bat文件或安装cygwin来运行linux指令会更容易些。欢迎Windows开发者们来更新本章节,介绍最合适在windows平台使用的命令行测试。