php - 将变量传递给 PhpUnit

标签 php phpunit

我使用 phpunit 开发了一组测试用例,用于测试开发站点和生产站点。唯一的区别是域名。如何将域从命令行传递到 phpunit 测试用例,这样我就不需要修改每个文件?

最佳答案

在您的 phpunit-bootstrap.php 中,您可以执行如下操作:

$site = getenv('DOMAIN');

和使用

<php>
  <env name="DOMAIN" value="http://production.com"/>
</php>

在你的 phpunit.xml 文件中 as shown in the documentation .

这种方法的缺点是您需要有两个不同的 xml 文件。


其他选项是使用围绕 phpunit 的自定义包装器脚本,如@DavidHarkness 展示的那样效果很好

或者,如果您不想以自动化方式(或同时使用这两种方法)运行这些测试,可以执行以下操作:

$site = getenv('DOMAIN');
if(!$site) {
    echo "Enter Domain: ";
    $site = fgets(STDIN);
}

然后让运行者检查环境,如果没有任何东西,请您提供域名。


封装或定义或其他任何东西

php 从外部世界接收输入的几乎所有方式都是如此。

<php>
  <define name="DOMAIN" value="http://production.com"/>
</php>

例如,在您无论如何都使用常量的情况下也适用。

关于php - 将变量传递给 PhpUnit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8491437/

相关文章:

unit-testing - 只允许 Selenium 访问该页面

php - 此功能是否有任何日期/时间可能会中断?

php - 除了 ping 之外,保持 mysql 连接事件的更好方法

php - 如何解决此Laravel问题- “/tmp/phpY14gRo”文件不存在或不可读?

php - Websocket 测试 [功能]

PHPUnit未定义的方法调用

php - 在 codeigniter 中显示来自 mysql 的图像

php - 返回MySQL中相同id组的最后一个插入行

PHPUnit 抛出 "Warning: date(): It is not safe..."

selenium - 有没有办法通过tearDown()判断我的PHPUnit测试用例是否失败?