日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php向bat中传递参数,php-将参数传递给PHPUnit

發布時間:2023/12/15 php 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php向bat中传递参数,php-将参数传递给PHPUnit 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

php-將參數傳遞給PHPUnit

我開始編寫PHPUnit測試,并且希望這些測試可以在開發人員的機器以及我們的服務器上運行。 開發人員計算機的設置與服務器不同,甚至彼此不同。

要在這些不同的地方運行,似乎必須由運行該測試的人員來指明要在哪里運行。 然后,測試可以查找正在運行的計算機的正確配置。

我在想類似的東西:

phpunit.bat -X johns_laptop unittest.php

或在Alpha服務器上:

phpunit -X alpha unittest.php

在測試中,我將能夠獲取'X'(或其他任何值)參數的值,并且知道例如該機器到應用程序根目錄的路徑。

它看起來不像命令行所允許的那樣-還是我錯過了什么?

dl__ asked 2020-08-06T10:29:26Z

9個解決方案

38 votes

您可以為此使用PHPUnit的--bootstrap開關。

--bootstrap A "bootstrap" PHP file that is run before the tests.

然后,制作一個包含變量的bootstrap.php文件:

$port = 4445;

在測試中,您可以獲取以下值:

global $port;

$this->setPort($port);

然后運行:

phpunit --bootstrap boot.php MyTest.php

Mark Theunissen answered 2020-08-06T10:30:08Z

32 votes

一種方法是讓您檢查$ argv和$ argc。 就像是:

require_once 'PHPUnit/Framework/TestCase.php';

class EnvironmentTest extends PHPUnit_Framework_TestCase {

public function testHasParam() {

global $argv, $argc;

$this->assertGreaterThan(2, $argc, 'No environment name passed');

$environment = $argv[2];

}

}

然后,您可以像這樣調用phpunittest:

phpunit EnvironmentTest.php my-computer

Paolo answered 2020-08-06T10:29:35Z

15 votes

將變量傳遞到引導文件和測試文件的一種絕佳方法是使用環境變量:

export MY_ENV_VAR="some value"

phpunit all

然后,在您的PHP文件中,您可以像這樣訪問它:

getenv('MY_ENV_VAR')

資料來源:[http://blog.lysender.com/2010/10/phpunit-passing-environment-variable-to-your-application/]

scribu answered 2020-08-06T10:30:37Z

4 votes

我認為上述答案無法解決我的同樣問題。

公認的答案并不完美。 這樣,應始終將自定義選項放在參數列表的末尾,并且沒有指示符可以表明它們是自定義選項。 如果我需要的自定義選項的數量沒有固定,我應該編寫大量代碼以解析帶有正則表達式或類似內容的自定義選項。

環境變量解決方案是好的,但不是自然的。 看起來很奇怪。

VAR1=aaa VAR2=bbb VAR3=ccc ./phpunit-custom-option CustomOptionTest.php

Shell腳本和setUp()解決方案與公認的缺點相同。 可能是您應該編寫大量代碼來分析文件并處理數量無法預測的自定義選項。

我認為引導腳本不是正確的解決方案。 它可以用于自動處理骯臟的作品,每次都執行相同的操作,但不能很好地處理更改部分。

我不喜歡以上所有答案。

我自己也沒有好主意。 但是也許我所做的可以給您啟發。 我在GitHub上分叉了phpunit項目,并對代碼進行了一些修改,使其支持自定義選項功能。

修改后的phpunit版本可以接受如下自定義選項:

./phpuint-custom-option --custom var1=value1 --custom var2=value2 CustomOptionTest.php

在測試中,您可以通過訪問超級全局變量$ _SERVER訪問自定義選項

class CustomOptionTest extends PHPUnit_Framework_TestCase {

public function testCustomOption() {

$this->assertEquals('value1', $_SERVER['var1']);

$this->assertEquals('value2', $_SERVER['var2']);

}

}

您可以在此處找到我的代碼,然后在此處下載修改后的版本(通過單擊頁面上的“查看完整文件”鏈接)。

僅供參考。 本文是類似的解決方案。

Charles answered 2020-08-06T10:31:42Z

3 votes

正如Jasir已經提到的那樣,一種解決方案是在phpunit調用之前設置環境變量。

在Linux上:

X=alpha phpunit unittest.php

在Windows上可能:

set X=johns_laptop && phpunit.bat unittest.php

在腳本中使用

getenv('X')

讀取值

Victor answered 2020-08-06T10:32:20Z

2 votes

我在這個確切的問題上苦苦掙扎,并提出了一種方便又方便的解決方案:我將參數寫入磁盤上的文件,并以setUp()048方法進行檢索:

public function setUp() {

$this->setBrowser('firefox');

$this->base_url = file_get_contents("selenium_host");

$this->setBrowserUrl($this->base_url);

}

我沒有直接調用./run_all_tests.sh 7 'http://adifferenthost.com'或paratest265,而是使用Shell腳本來啟動測試。 這個調用paratest,讓我指定進程數以及要運行測試的主機。

run_all_tests.sh

if [ $1 ]

then

threads=$1

else

threads=5

fi

if [ $2 ]

then

echo $2 > selenium_host

else

echo 'http://defaulthost.com' > selenium_host

fi

vendor/bin/paratest -p$threads -f --colors TestSuite.php

然后,以7個線程針對[http://adifferenthost.com:]運行

./run_all_tests.sh 7 'http://adifferenthost.com'

ehed answered 2020-08-06T10:32:53Z

2 votes

此處的所有解決方案均適用于該問題,但是對于某些情況,還有另一種方法可能更簡單。Phing將接受以phing -Dtest=MyTest.class.php形式傳遞的參數

所以用phing -Dtest=MyTest.class.php

然后,您可以使用phing條件句來處理以下參數:

passthru="true" returnproperty="phpunitreturn" />

Frug answered 2020-08-06T10:33:22Z

1 votes

如果要在每次測試運行中更改測試參數,則在命令行上傳遞參數將很有意義。 在不同的計算機上運行特定于主機的測試并不是此解決方案的最佳理由。

為此,PHPUnit配置文件可能更適合。 它使您可以控制特定于主機甚至請求的變量,包括操縱phpunit.xml.dist設置以及定義常量,全局變量,phpunit.xml、$_SERVER甚至$_GET、$_POST等。這些都在配置文件的節點下完成 ,請參閱設置PHP INI設置,常量和全局變量

Symfony2使用此方法,并在單元測試中同時提供phpunit.xml.dist(默認配置)和phpunit.xml。 后者被忽略,以允許您為每臺計算機自定義它而不影響存儲庫。 然后,您將使用以下命令運行測試:

phpunit -c /path/to/phpunit.xml

gopherIT answered 2020-08-06T10:33:52Z

0 votes

如果要在遠程計算機上運行測試,請使用ssh然后運行它。 在語言環境機器上,您僅需CD到您的根目錄,然后運行phpunit。

user@local:/path/to/your/project$ phpunit

user@remote:/var/www/project$ phpunit

編輯:您正在談論機器相關的配置。 (什么樣的配置?)我的解決方案是將這些配置放在相同的位置,而不是版本控制的位置,然后在所需的設置方法中讀取/解析其運行時。

erenon answered 2020-08-06T10:34:16Z

總結

以上是生活随笔為你收集整理的php向bat中传递参数,php-将参数传递给PHPUnit的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。