繁体   English   中英

如果测试失败,如何在Web应用程序中禁用功能?

[英]How do I disable a feature in my web application if a test breaks?

我必须为上课编写一个抓取工具,并且我想对其进行测试以确保它确实有效。

如果我正在抓取的网站对其网站进行了更改,我希望我们的网站失败并禁用该功能,直到我们更新抓取工具。

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

我想我要问的是,有什么工具可以用来使我的应用程序更强大,从而使我的用户在刮板破裂时看不到一些奇怪的消息?

  1. 网站出现意外HTML时让抓取工具引发自定义异常
  2. 编写单元测试以测试刮板在预期具有HTMl时实际上可以解析网站,还可以测试该类在无法解析网站时抛出自定义异常
  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();

...

就像这个小的刮板外观所示,您可以配置它的内部错误处理,在此情况下,它会自动禁用并发送通知,以防发生错误。

因为它将被自动禁用,所以您的网站将返回空结果,并且在您解决问题之前不再需要多在意。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM