是否可以从PHPUnit运行HTML测试套件?

时间:2012-09-06 08:04:28

标签: php selenium phpunit code-coverage selenium-ide

我想测量一个用于selenium的HTML测试套件的代码覆盖率。因此我想使用PHPUnit来执行套件,因为PHPUnit对代码覆盖率分析有很好的支持。

因此:是否可以从PHPUnit运行HTML测试套件?

2 个答案:

答案 0 :(得分:5)

简短回答

运行单个HTML测试文件不是问题,但运行HTML套件文件似乎不起作用。只要您将所有来自诉讼的HTML测试文件放在目录中,您就可以运行runSelenese($folderName)

长答案

我不知道在我进行更多挖掘之前,甚至可以直接运行Selenium HTML文件。

使用做的事情是首先使用Selenium IDE PHP Formatter plugin for Firefox转换/导出它们。

显然这不是必要的。一直到Chapter 17. PHPUnit and Selenium the manual states的底部:

  

使用runSelenese($filename)方法,您还可以从Selenese / HTML规范运行Selenium测试。此外,使用静态属性$seleneseDirectory,您可以从包含Selenese / HTML文件的目录中自动创建测试对象。递归搜索指定目录以查找预期包含Selenese / HTML的.htm文件。例17.5给出了一个例子。

     

示例17.5:使用Selenese / HTML文件目录作为测试

<?php
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';

class SeleneseTests extends PHPUnit_Extensions_SeleniumTestCase
{
    public static $seleneseDirectory = '/path/to/files';
}
?>

在PHPUnit中进行测试后,您可以使用它从Selenium Server获取代码覆盖率。

再次,from the manual

  

PHPUnit_Extensions_SeleniumTestCase可以收集代码覆盖率   通过Selenium进行测试的信息:

     
      
  1. PHPUnit/Extensions/SeleniumTestCase/phpunit_coverage.php复制到您的网络服务器的文档根目录中。
  2.   
  3. 在您的网络服务器的php.ini配置文件中,分别将PHPUnit/Extensions/SeleniumTestCase/prepend.phpPHPUnit/Extensions/SeleniumTestCase/append.php配置为auto_prepend_file和auto_append_file。
  4.   
  5. 在扩展PHPUnit_Extensions_SeleniumTestCase的测试用例类中,使用
      protected $coverageScriptUrl = 'http://host/phpunit_coverage.php';
      配置phpunit_coverage.php脚本的URL。
  6.   

由于设置起来有点麻烦,我总是使用Page Coverage plugin来深入了解HTML页面覆盖率。

答案 1 :(得分:0)

单元测试PHP HTML输出是一个好主意。更多的人应该这样做,但事实证明,过去并非如此简单。

我遇到了同样的问题,可以解决这个问题:https://packagist.org/packages/phpfui/html-unit-tester它可以从URL,文件或字符串片段验证HTML和CSS。

要执行您想做的事情,您应该设置一个本地Web服务器,您的测试可以对您的应用程序进行测试。您可能已经有了它,但是请确保它适用于您的本地环境以及您在其上运行测试的任何服务器。

然后,您可以将assertValidUrl方法与本地服务器的路径一起使用。由于您不是在与模板进行比较,而只是在测试HTML是否有效,因此您可以快速找到最近引入的HTML错误。

希望这会有所帮助。