如果测试失败,如何禁用web应用程序中的某个功能



我必须为类编写一个scraper,我想对它进行测试,以确保它确实有效。

在这种情况下,我正在抓取的网站对他们的网站进行了更改,我希望我们的网站失败并禁用该功能,直到我们更新抓取器。

假设我使用单元测试来测试刮刀,是否有一些工具会每X分钟运行一次测试,并在禁用Y功能之前查看它是否损坏?

我想我想问的是,我可以使用哪些工具来提高我的应用程序的健壮性,这样我的用户就不会在我的刮刀坏了的情况下看到一些奇怪的消息?

  1. 当网站有意外的HTML时,让scraper抛出自定义异常
  2. 编写单元测试,测试scraper在预期HTM1时是否能够解析网站,并测试类在无法解析网站时抛出自定义异常
  3. 在生成网站内容的代码中捕获异常。发送错误消息以记录并向用户显示合适的信息

您还应该将解析后的内容保存在本地。如果远程服务器关闭,您可以回退保存的内容,而不是抛出ScraperParseThingyException。

您可以通过多种方式对此进行监控。最简单的方法是偶尔关注一下错误日志。

$scraperConfiguration = array(
'disable_on_error'      => true,
'notify_on_first_error' => true,
'notify_email'          => 'scrape-errors@example.com',
);
...
$scraper = new Scraper($scraperConfiguration);
$scrapeResult = $scraper->scrape();
...

正如这个小scraperfacade所示,您可以配置它的内部错误处理,在发生错误时自动禁用并发送通知。

因为它将被自动禁用,所以你的网站会返回一个空结果,在你解决问题之前,你不需要再关心了。

此外,您可以在带有测试配置的测试用例中使用它(例如,抛出异常并对其进行测试,而不是发送电子邮件并在错误时禁用),这样您就可以在测试中看到它,尤其是在开发和维护组件时。

相关内容