如果测试中断,如何在Web应用程序中禁用某项功能?

时间:2012-10-11 02:51:55

标签: php testing lamp robustness

我必须为课程写一个刮刀,我想对它进行测试,以确保它确实有效。

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

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

我想我要问的是,我可以使用哪些工具来使我的应用程序更加健壮,因此我的用户在我的刮刀断开的情况下看不到一些奇怪的消息?

1 个答案:

答案 0 :(得分:1)

  1. 当网站出现意外HTML时,让抓手抛出自定义异常
  2. 编写单元测试,用于测试刮刀实际可以在预期HTMl时解析网站并测试该类在无法解析网站时抛出自定义异常
  3. 在生成网站内容的代码中捕获异常。将错误消息发送到日志并向用户显示适当的信息
  4. 您还应该在本地保存已解析的内容。如果远程服务器关闭,您将回退保存的内容,而不是抛出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();
    
    ...
    

    正如这个小刮刀facade所示,您可以配置它的内部错误处理,这里会自动禁用并发送通知,以防发生错误。

    因为它会自动停用,所以您的网站会收回一个空的结果,在解决问题之前不需要太在意。

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