PHPUnit和Selenium Test简化了配置

时间:2013-11-27 11:36:51

标签: php selenium phpunit functional-testing

我是使用SeleniumTest在PHPunit中的新手。

http://phpunit.de/manual对我来说并不清楚。有很多选择,我尝试了很多,但不知道如何连接到一起工作。

我有一个测试套件,在测试套件中有4个测试用例。

我想知道下一件事:

  • 我是否需要在每个测试用例脚本中设置SetUp()和tearDown()??
  • 如何连接我的SQL数据库??

这是4个测试用例之一:

<?php
class Example extends PHPUnit_Extensions_SeleniumTestCase
{
  protected function setUp()
  {
    $this->setBrowser("*firefox");
    $this->setBrowserUrl("http://blabla.com");
  }

  public function testMyTestCase()
  {
    $this->open("/");
    $this->type("id=signin_username", "john");
    $this->type("id=signin[password]", "1234567");
    $this->click("id=tsubmit");
    $this->waitForPageToLoad("30000");
    $this->open("/shoes");
    $this->assertEquals("RE", $this->getText("//div[@id='sf_admin_content']/div/table/tbody/tr[7]/td[2]"));
    $this->open("/shoes/7");
    $this->assertEquals("Status: Active", $this->getText("//div[@id='sf_fieldset_account']/div[2]"));
    $this->open("/logout");
  }
}
?>

1 个答案:

答案 0 :(得分:0)

Selenium测试需要网站和浏览器的URL。所以你需要在测试用例中编写setUp()。 但是你可以编写扩展PHPUnit_Extensions_SeleniumTestCase的特殊类,将其放入setUp()并扩展其他测试用例。

<?php
class BlablaTestCase extends PHPUnit_Extensions_SeleniumTestCase
{
  protected function setUp()
  {
    $this->setBrowser("*firefox");
    $this->setBrowserUrl("http://blabla.com");
  }
}

在其他文件中:

<?php
require_once 'BlablaTestCase.php';

class ExampleTestCase extends BlablaTestCase
{
  public function testMyTestCase()
  {
    $this->open("/");
    $this->type("id=signin_username", "john");
  }
}

但是没有必要为一个站点分配测试。您可以在一个测试用例中编写不同的测试:

<?php
class Example extends PHPUnit_Extensions_SeleniumTestCase
{
  protected function setUp()
  {
    $this->setBrowser("*firefox");
    $this->setBrowserUrl("http://blabla.com");
  }

  public function testMyTestCase()
  {
    $this->open("/");
    $this->type("id=signin_username", "john");
    /* ... */
  }

  public function testMyTestCase2(){
    $this->open("/");
    $this->type("id=signin_username", "peter");
    /* ... */
  }

}
?>

tearDown()是可选的。如果您需要收集一些结果或在测试后清理一些东西,您可以使用它。

您不应该在Selenium测试中连接到您的SQL DB 。所有Selenium测试都在浏览器中运行,与用户进行UI交互。