我想测量硒的HTML测试套件的代码覆盖率。因此,我想使用PHPUnit来执行套件,因为PHPUnit对代码覆盖率分析有很好的支持。
因此:是否可以从PHPUnit运行HTML测试套件?
运行单个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文件的目录中自动创建测试对象。在指定目录中递归搜索.htm文件,这些文件应包含Selenese / HTML。示例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服务器获取代码覆盖率。
再次,from the manual:
PHPUnit_Extensions_SeleniumTestCase可以收集代码覆盖率通过Selenium运行的测试信息:
- 将
PHPUnit/Extensions/SeleniumTestCase/phpunit_coverage.php
复制到Web服务器的文档根目录中。- 在Web服务器的
php.ini
配置文件中,将PHPUnit/Extensions/SeleniumTestCase/prepend.php
和PHPUnit/Extensions/SeleniumTestCase/append.php
分别配置为auto_prepend_file和auto_append_file。- 在扩展
PHPUnit_Extensions_SeleniumTestCase
的测试用例类中,使用protected $coverageScriptUrl = 'http://host/phpunit_coverage.php';
为phpunit_coverage.php
脚本配置URL。
由于设置起来可能有些麻烦,我一直只使用Page Coverage plugin来洞悉HTML页面的覆盖范围。
单元测试PHP HTML输出是一个好主意。更多的人应该这样做,但事实证明,过去并不是那么简单。
我有同样的问题,可以解决这个问题:https://packagist.org/packages/phpfui/html-unit-tester它可以从URL,文件或字符串片段验证HTML和CSS。
要做您想做的事,您应该设置一个本地Web服务器,您的测试可以对您的应用程序进行测试。您可能已经拥有了,但是请确保它适用于您的本地环境以及您在其上运行测试的任何服务器。
然后,您可以将assertValidUrl方法与本地服务器的路径一起使用。由于您不是在与模板进行比较,而只是在测试HTML是否有效,因此您可以快速找到最近引入的HTML错误。
希望这会有所帮助。