PHPUnit& Selenium - 如何让测试使用驱动程序?

时间:2013-03-08 17:12:17

标签: php selenium phpunit driver

我的常规测试设置类似于:

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');
    }
}

从这里开始,当我使用PHPUnit运行MyTest.php时,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()只是为测试添加了更多驱动程序,并且仅假设设置使用它们。有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

尽管$this->drivers是一个数组,但它总是只有一个元素。您可以查看here。所以 $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)