使用示例测试分类器

时间:2011-10-26 15:40:15

标签: unit-testing testing

我正在编写一个分类器,用于对特定交易是否适用于餐厅/酒店/等进行分类......这是用于分析外部网站的网络爬虫的一部分。 一开始我做了一顿饭?()方法,它接受一段文字,如果它认为文字是关于一顿饭的话,它会返回true。它不能100%准确,因为只使用简单的关键字匹配。

def meal?(text)
  !text.match(/restaurant|meal|wine|.../i).nil?
end

现在我正在为它写一个测试,我有两个问题。第一个是我认为在单元测试中重新列出所有这些关键字有点多余。你觉得怎么样?

第二个问题: 我在源代码管理中有一个.html文件。它用于测试爬虫的解析功能。理论上它的所有项目都应该通过,所以我想在这个分类测试中使用那个html,解析那个html并将每个交易的描述提供给这个方法。

一个缺点是.html来自外部网站。当该站点更改布局时,我将更新此.html文件,然后我也必须更改此分类测试。但我认为这没关系。

这是推荐的吗?我想到了这种方式,因为我感觉不舒服从.html中提取信息并将其放在测试脚本本身(不是DRY,并使测试脚本非常大)。提供解析的描述会违反任何基本的测试法则,例如“这会隐藏开发人员的必要细节”或“这对生成报告不利”吗?

1 个答案:

答案 0 :(得分:0)

好的,所以我显然误解了这个问题所以我会完全修改这个答案。

我个人认为从html文件中获取实际文本并将其复制/粘贴到测试更加简单和可取,而不是加载html文件的间接方式。我能找到两个理由......

  • 当我写/读单元测试时,我更喜欢所有信息都在我面前,而不是像我需要挖掘的资源文件那样的“外部源”。个人喜好。
  • 这有点令人困惑,因为您可以将此方法用于其他事情,而不仅仅是从html文件中读取文本并对其进行分类。所以为了保持它更通用,我只想在实际测试中使用原始文本。
然而,我无法找到你为什么要做的事情真的非常糟糕的原因,我认为这归结为个人偏好。