屏幕抓取的单元测试?

时间:2009-12-08 16:48:14

标签: unit-testing exception-handling screen-scraping phpunit

我是单位测试的新手,所以我想得到一些更多人的意见。

我需要尽快编写一些屏幕抓取代码。目标系统是一个web ui,其中包含大量的HTML解析和类似的易失性。我永远不会收到有关目标系统任何更改的通知(例如,他们在其网站上进行了重新设计或以其他方式更改了功能)。所以我预计我的代码会定期发生。

所以我认为我真正的问题是,我的单元测试中有多少(如果有的话)应该担心或处理界面(我正在抓取的网站)的变化?

我认为单元测试与否,我需要在运行时进行大量测试,因为我需要确保我所消耗的数据是原始的。即使我在每次运行之前运行单元测试,Web UI仍然可以在测试和运行时之间进行更改。

那么我是否专注于代码内测试和异常处理?这是否意味着在沙子中绘制一条线并完全排除单元测试中的这种测试?

由于

3 个答案:

答案 0 :(得分:6)

单元测试应始终设计为具有可重复的已知结果。

因此,要对一个屏幕刮板进行单元测试,您应该针对一组已知的HTML编写测试(您可以使用模拟对象来表示它)

你所谈论的那种事情听起来并不像是对我进行单元测试的情况 - 如果你想确保你的代码尽可能强大地运行,那么就像你说的那样,它就更多了 - 代码测试和异常处理。

我还会包含一些警报代码,因此系统会让您了解HTML未按预期解析的任何情况。

答案 1 :(得分:2)

您应该尝试尽可能地分开测试。使用执行实际代码的低级别测试来测试数据处理(例如,通过模拟浏览器)。

在模拟浏览器中,只需确保在您点击按钮,提交表单以及关注链接时发生正确的事情。

永远不要试图测试布局是否正确。

答案 2 :(得分:1)

我认为单元测试可能对此有用,如果你有一个构建服务器,他们会给你一个早期警告代码不再有效。你不能编写一个单元测试来证明如果网站改变了HTML,屏幕抓取仍然有用(因为你不知道它们会改变什么)。

您可以编写一个单元测试来检查您的工作是否返回了有用的东西。