Php 在抓取web应用程序时使用Xdebug测量代码覆盖率
我基于Php 在抓取web应用程序时使用Xdebug测量代码覆盖率,php,selenium,xdebug,Php,Selenium,Xdebug,我基于ChromeDriver Selenium构建了我的爬虫程序,我想在我的自动爬虫程序对应用程序进行爬虫时测量web应用程序的代码覆盖率 所以,我的问题是如何使用Xdebug(我对它比较新)。我在PHP上安装了Xdebug,但不知道如何启动?因为我没有找到任何可以帮助我的资源,有人能给我一个方法吗?我没有一个直接的例子,但我会用下面的方法来解决这个问题代码未经测试,可能需要更改才能工作,请以此为起点 在任何情况下,您都需要执行以下操作: 收集每个请求的代码覆盖率数据,并将其存储到文件中 聚合
ChromeDriver Selenium
构建了我的爬虫程序,我想在我的自动爬虫程序对应用程序进行爬虫时测量web应用程序的代码覆盖率
所以,我的问题是如何使用Xdebug(我对它比较新)。我在PHP上安装了Xdebug,但不知道如何启动?因为我没有找到任何可以帮助我的资源,有人能给我一个方法吗?我没有一个直接的例子,但我会用下面的方法来解决这个问题代码未经测试,可能需要更改才能工作,请以此为起点 在任何情况下,您都需要执行以下操作:
composer require phpunit/php code coverage
,然后创建一个自动预结束文件,其中包含如下内容:
<?php
require 'vendor/autoload.php';
use SebastianBergmann\CodeCoverage\Filter;
use SebastianBergmann\CodeCoverage\Driver\Selector;
use SebastianBergmann\CodeCoverage\CodeCoverage;
use SebastianBergmann\CodeCoverage\Report\Html\Facade as HtmlReport;
$filter = new Filter;
$filter->includeDirectory('/path/to/directory');
$coverage = new CodeCoverage(
(new Selector)->forLineCoverage($filter),
$filter
);
$coverage->start($_SERVER['REQUEST_URI']);
function save_coverage()
{
global $coverage;
$coverage->stop();
$data = $coverage->getData();
file_put_contents('/tmp/path/crawler/' . bin2hex(random_bytes(16)), serialize($data) . '.serialized', $data->get );
}
register_shutdown_function('save_coverage');
?>
如果我有时间,我会做一个视频。FWIW,我现在已经录制了一个视频,但我还没有编辑。最终的结果略有不同,尤其是在进行合并时。如果您想让我用完整的示例更新此内容,请告诉我。是的,如果您有时间:)谢谢
<?php
require 'vendor/autoload.php';
use SebastianBergmann\CodeCoverage\Filter;
use SebastianBergmann\CodeCoverage\Driver\Selector;
use SebastianBergmann\CodeCoverage\CodeCoverage;
use SebastianBergmann\CodeCoverage\Report\Html\Facade as HtmlReport;
$filter = new Filter;
$filter->includeDirectory('/path/to/directory');
$coverage = new CodeCoverage(
(new Selector)->forLineCoverage($filter),
$filter
);
foreach ( glob('/tmp/path/crawler/*.serialize') as $file)
{
$data = unserialize( file_get_contents( $file ) );
$fileCoverage = new CodeCoverage(
(new Selector)->forLineCoverage($filter),
$filter
);
$fileCoverage->setData( $data );
$coverage->merge( $fileCoverage );
}
/* now generate the report, as per the README.md again */
(new HtmlReport)->process($coverage, '/tmp/code-coverage-report');
?>