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


Is it possible to run HTML test suite from PHPUnit?

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

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

简短回答

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

答案很长

我甚至不知道直接运行SeleniumHTML文件是可能的,直到我做了更多的挖掘

使用做的是首先使用Firefox的SeleniumIDE PHP格式化程序插件转换/导出它们。

显然这是没有必要的。一直到Chapter 17. PHPUnit and Selenium底部的手动状态:

使用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服务器获得代码覆盖率。

再次,从手册:

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

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

由于设置起来可能有点麻烦,我一直只是使用页面覆盖插件来深入了解HTML页面覆盖。

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

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

要执行您想要的操作,您应该设置一个本地web服务器,您的测试可以为您的应用程序访问该服务器。你可能已经有了这个,但要确保它适用于你的本地环境和你运行测试的任何服务器

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

希望这能有所帮助。