我想为网络爬虫写一些测试。我想使用很多测试网页,但我不确定如何让鼻子(或另一个单元测试框架)在没有大量重复代码的情况下做我需要的事情。
我的问题是我想测试很多不同的页面,但我不知道如何使用nose。这大致是我想要做的:
class TestPage(object):
def setup(self):
with open('test_data/page.html', 'r') as f:
html = f.read()
self.scraper = Scraper(html)
如果我想测试的唯一页面是“page.html”,那就没问题了。但我有数百页要测试。我可以复制该类,并且每次都更改类的名称和路径的文件名,但这显然是荒谬的。
我想在设置中放置代码来为每个页面创建单独的 Scraper 对象并将它们存储在测试对象的列表中。然后我可以让测试方法对每个 Scraper 对象进行操作。但我认为我会遇到保持每个测试隔离并从鼻子获取单独消息的问题。
我还尝试子类化一个基测试类并将路径传递给init,但这会给鼻子带来问题。
我很感激任何关于如何使用鼻子解决这个问题的建议,另一种方法,或者任何可能有用的阅读。