Selenium PHPUnit передает переменные в командной строке Ubuntu - PullRequest
3 голосов
/ 04 ноября 2011

Я пытаюсь передать переменную в скрипт Selenium PHPUnit с помощью командной строки.Посмотрите справочную документацию PHPUnit:

Мы можем предоставить переменные, используя файл конфигурации XML или PHP, но в идеале я хотел бы передать переменную без использования внешнего файла.Причина, по которой я ищу это, заключается в том, что я хочу иметь возможность изменять значения тайм-аута без необходимости изменять мой пользовательский файл config.php.

phpunit --help
PHPUnit 3.6.0 by Sebastian Bergmann.

Usage: phpunit [switches] UnitTest [UnitTest.php]
       phpunit [switches] <directory>

  --log-junit <file>        Log test execution in JUnit XML format to file.
  --log-tap <file>          Log test execution in TAP format to file.
  --log-json <file>         Log test execution in JSON format.

  --coverage-html <dir>     Generate code coverage report in HTML format.
  --coverage-clover <file>  Write code coverage data in Clover XML format.
  --coverage-php <file>     Serialize PHP_CodeCoverage object to file.
  --coverage-text <file>    Generate code coverage report in text format.

  --testdox-html <file>     Write agile documentation in HTML format to file.
  --testdox-text <file>     Write agile documentation in Text format to file.

  --filter <pattern>        Filter which tests to run.
  --group ...               Only runs tests from the specified group(s).
  --exclude-group ...       Exclude tests from the specified group(s).
  --list-groups             List available test groups.

  --loader <loader>         TestSuiteLoader implementation to use.
  --printer <printer>       TestSuiteListener implementation to use.
  --repeat <times>          Runs the test(s) repeatedly.

  --tap                     Report test execution progress in TAP format.
  --testdox                 Report test execution progress in TestDox format.

  --colors                  Use colors in output.
  --stderr                  Write to STDERR instead of STDOUT.
  --stop-on-error           Stop execution upon first error.
  --stop-on-failure         Stop execution upon first error or failure.
  --stop-on-skipped         Stop execution upon first skipped test.
  --stop-on-incomplete      Stop execution upon first incomplete test.
  --strict                  Run tests in strict mode.
  -v|--verbose              Output more verbose information.

  --skeleton-class          Generate Unit class for UnitTest in UnitTest.php.
  --skeleton-test           Generate UnitTest class for Unit in Unit.php.

  --process-isolation       Run each test in a separate PHP process.
  --no-globals-backup       Do not backup and restore $GLOBALS for each test.
  --static-backup           Backup and restore static attributes for each test.
  --syntax-check            Try to check source files for syntax errors.

  --bootstrap <file>        A "bootstrap" PHP file that is run before the tests.
  -c|--configuration <file> Read configuration from XML file.
  --no-configuration        Ignore default configuration file (phpunit.xml).
  --include-path <path(s)>  Prepend PHP's include_path with given path(s).
  -d key[=value]            Sets a php.ini value.

  -h|--help                 Prints this usage information.
  --version                 Prints the version and exits.

  --debug                   Output debugging information.

1 Ответ

2 голосов
/ 04 ноября 2011

Используйте -d, чтобы установить одно из значений конфигурации PHP и прочитать его, используя ini_get() в вашем bootstrap.php файле. Используйте define(), чтобы пройти тест. Конечно, это хак, но он работает для вашего сценария тайм-аута.

В качестве теста я использовал max_execution_time в качестве точки передачи. Если вы используете ту же самую вещь, вы захотите сбросить ее, чтобы PHPUnit не погиб, если это займет слишком много времени. ;)

// bootstrap.php

$timeout = ini_get('max_execution_time');
set_time_limit(0); // run forever

Используйте -d для ввода желаемого времени ожидания.

phpunit -d max_execution_time=5000

Обновление: Сначала я попытался использовать готовую настройку my_test_timeout, но значение не было получено. PHP или PHPUnit должны блокировать значения, отсутствующие в INI-файле, или которые PHP просто не поддерживает. Учитывая, что INI-файл может иметь значения, специфичные для модулей, о которых PHP не может знать заранее, мне интересно, можете ли вы добавить свой пользовательский параметр в php.ini, чтобы заставить его работать. Это стоит того, чтобы не загромождать полезные настройки. Плюс это может позволить вам использовать строки и другие типы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...