多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

使用PHPUnit+Selenium进行自动化测试

更新时间:2022-04-24 09:27:52 作者:多测师 浏览:78

  第一步,安装PHPUnit

  最简单的方式莫过于到PHPUnit的官网下载PHPUnit,然后把那个下载了的phpunit.phar加到PATH中。

  此外,还可以通过 pear 来安装phpunit:

  pear clear-cache

  pear channel-discover pear.phpunit.de

  pear channel-discover components.ez.no

  pear channel-discover pear.symfony-project.com

  pear install -a -f  phpunit/PHPUnit

  然而使用 pear 安装方式,我却是没有成功!大概是因为天朝的神奇的GFW吧!

使用PHPUnit+Selenium进行自动化测试

  第二步,下载Selenium Standalone Server

  传送门:http://docs.seleniumhq.org/download/

  下载下来一般是一个selenium-server-standalone-2.48.2.jar这样的文件(版本号可能会有所更新)。

  第三步,下载WebDriver for Chrome

  传送门: https://sites.google.com/a/chromium.org/chromedriver/downloads

  这个要根据电脑是Windows、Linux还是MAC,来下载相应的驱动,并解压缩。

  第四步,启动Server

  前面两步的东西都下载好了,就可以启动这个server了:

  # 假设1:已经装了java, 而且将java加到了PATH中

  # 假设2:前面两步下载的东东都在当前目录下

  java -jar selenium-server-standalone-2.42.2.jar -Dwebdriver.chrome.driver=./chromedriver

  p.s. 对于Windows的用户,后面的./chromedriver需要修改为.\chromedriver.exe

  第四步,下载PHP的WebDriver封装库

  本人喜欢使用Facebook出品的这个库.

  鉴于composer在国内的悲惨现状,还是直接下载zip包,然后自行加载吧。

  下面是我常用的自动加载器:

// file: tests/bootstrap.php

call_user_func(function(){

$namespaces = array(

'Facebook\WebDriver' =>  __DIR__.'/../php-webdriver/lib',

);

spl_autoload_register(function($class) use ($namespaces){

$class = ltrim($class, '\\');

foreach ($namespaces as $ns => $dir) {

if (strncmp($class, $ns, strlen($ns)) === 0){

$file = str_replace('\\', DIRECTORY_SEPARATOR, $dir . DIRECTORY_SEPARATOR . ltrim(substr($class, strlen($ns)), '\\')) . '.php';

if (is_file($file)){

include_once($file);

}

}

}

});

});

  这个自动加载器可以放到bootstrap.php中,以便phpunit跑用例前加载。

  第五步,编写一个简单的测试用例

  下面这个测试用例测试下百度是否能正常打开,检查百度的标题和URL是否符合预期。

// file: tests/sample/BaiduTest.php

class BaiduTest extends PHPUnit_Framework_TestCase

{

public function testTheTitleUrl()

{

// create a browser

$browser = create_browser();

// open baidu via GET

$browser->get('https://www.baidu.com/');

// get title

$this->assertEquals('百度一下,你就知道', $browser->getTitle());

// get the current URL

$this->assertEquals('https://www.baidu.com/', $browser->getCurrentURL());

// close the browser

$browser->quit();

}

}

  注意:文件名和类名要以Test结尾,而其中的测试函数要以test开头,这样子方便phpunit查找测试用例。

  此外,其中create_browser是放在bootstrap.php中的一个辅助函数:

  use Facebook\WebDriver\Remote\DesiredCapabilities;

  use Facebook\WebDriver\Remote\RemoteWebDriver;

  /**

  * @return RemoteWebDriver

  */

  function create_browser(){

  return RemoteWebDriver::create('http://localhost:4444/wd/hub',

  DesiredCapabilities::chrome(),

  5000);

  }

  第六步,跑一下测试用例试试

  phpunit --bootstrap tests/bootstrap.php tests/sample/BaiduTest.php

  Nice~ 成功跑通~

  最后,用phpunit.xml定义测试套,跑起来更便捷~

  老是敲那么一长串的命令也挺麻烦的,要是能像make一样只要敲一个make就搞定就好了 —— phpunit刚好提供了一个phpunit.xml让我们能定义常用的测试套之类的选项。

  详细的介绍在官方文档中已经很详细了,我这里就不啰嗦了。只秀个我认为较为简洁有效的配置:

<?xml version="1.0" encoding="UTF-8"?>

<phpunit

backupGlobals               = "false"

backupStaticAttributes      = "false"

colors                      = "true"

convertErrorsToExceptions   = "true"

convertNoticesToExceptions  = "true"

convertWarningsToExceptions = "true"

processIsolation            = "false"

stopOnFailure               = "false"

syntaxCheck                 = "false"

bootstrap                   = "tests/bootstrap.php" >

<testsuites>

<testsuite>

<directory>tests/sample</directory>

</testsuite>

<!-- ... -->

</testsuites>

</phpunit>

  以上内容为大家介绍了使用PHPUnit+Selenium进行自动化测试,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部