2

我的一般测试设置如下所示:

class MySeleniumTest extends PHPUnit_Extensions_SeleniumTestCase{

    public static $browsers = array(
        array(
            'name'    => 'Mozilla - Firefox',
            'browser' => '*firefox',
            'host'    => 'localhost',
            'port'    => 4444,
            'timeout' => 30000,
        ),
        array(
            'name'    => 'Google - Chrome',
            'browser' => '*googlechrome',
            'host'    => 'localhost',
            'port'    => 4444,
            'timeout' => 30000,
        )
    );

    //etc
}

从这里开始,一个单独的测试文件看起来像:

class MyTest extends MySeleniumTest{
    public function setUp(){
        parent::setUp();
        $this->setUser(1);
    }

    public function testPageTitle(){
        //Login and open the test page.
        $this->login(8);
        $this->open('/test/page');
        //Check the title.
        $this->assertTitle('Test Page');
    }
}

从这里开始,当我MyTest.php使用 PHPUnit 运行时,PHPUnit 将自动运行MyTest.php. 此外,它在每个指定的浏览器上单独运行每个测试。我想要做的是从该测试用例中获取有关运行特定测试用例的驱动程序的信息。所以像:

public function testPageTitle(){
    //Login and open the test page.
    $this->login(8);
    $this->open('/test/page');
    //Check the title.
    $this->assertTitle('Test Page');

    $driver = $this->getDriver();
    print($driver['browser']); //or something.
}

然而,这不起作用。并且$this->getDrivers()只是在测试中添加更多驱动程序,并且只假设由设置使用。有任何想法吗?谢谢!

4

1 回答 1

1

即使$this->drivers是一个数组,它也总是只有一个元素。你可以在这里查看。因此 $this->drivers[0]包含有关当前正在运行的浏览器的信息,您可以使用它$this->drivers[0]->getBrowser()来输出浏览器名称。

例子:

require_once 'MySeleniumTest.php';

class MyTest extends MySeleniumTest{
    public function setUp(){
        parent::setUp();
        $this->setBrowserUrl('http://www.google.com/');
    }

    public function testPageTitle(){
        $this->open('http://google.com');

        echo "{$this->drivers[0]->getBrowser()}\n";
    }
}

输出:

PHPUnit 3.7.18 by Sebastian Bergmann.

.*firefox
.*googlechrome


Time: 7 seconds, Memory: 3.50Mb

OK (2 tests, 0 assertions)
于 2013-03-09T17:16:08.720 回答