2013-02-22 83 views
0

我用Python编写小应用程序和一个模块负责下载和解析使用Beautiful Soup解析和urllib2的主页下载网页。的Python - 单元测试类,从HTML页面中提取数据

我想知道现在,我该如何编写负责解析页面的类的单元测试。

我可以创建一个围绕urllib2一些抽象,并将它注入到负责解析类(我的计划是有不同的网页不同的类),并在测试过程中我会注入一个对象,会嘲笑这种抽象。但我不太确定这种方式。我只会创建一个抽象,因为编写测试会更容易,而不是因为需要抽象(至少这是我现在所想的)。

另外我会有一个问题如何测试这种抽象,它将需要互联网连接正常工作,当我将运行测试我怎么能断言适当的页面被下载?

回答

1

为了实现在Python单元测试,你应该考虑使用嘲弄和补丁: http://www.voidspace.org.uk/python/mock/

+0

我知道嘲笑,我甚至在我的文章中提到它。我的问题是我不知道如何正确测试我的类,它使用'urllib2'中的函数'urlopen'来下载页面。即使我在页面下载时创建了一个抽象,但仍然有一个测试这个抽象的例子,我们又遇到了同样的问题。 – Andna 2013-02-22 21:35:08

+0

我不确定我是否明白你的观点。你不需要自己创建抽象来模拟'urlopen',你可以使用补丁修饰器。 – Jean 2013-02-22 21:40:20

+0

好的,我读了关于这个补丁装饰器,它的工作,谢谢。 – Andna 2013-02-22 22:09:09