对不起,如果这是一个很愚蠢的问题,但我已经找了很久了,只是无法弄清楚。
因此,我有一个关于单元测试的问题,不一定是关于Python的,但是由于我目前正在使用Python,所以我选择以它作为我的问题的基础。
我知道单元测试的概念,但我在互联网上唯一能找到的就是非常简单的单元测试。就像测试方法sum(a,b)是否返回a+ b的和一样。
但是,在处理更复杂的程序时,如何应用单元测试?举个例子,我写了一个爬虫。我不知道它还会有什么,否则我就不需要爬虫了。那么,在不知道该方法将返回的情况下,如何测试爬虫是否正常工作呢?
提前感谢!
发布于 2014-01-18 12:01:59
整个爬行器可能会在功能上进行测试(我们会到达那里)。至于单元测试,您可能已经用几个组件编写了爬虫,比如页面解析器、url识别器、获取器、重定向处理程序等等。您应该对它们中的每一个进行单元测试,或者至少测试那些至少具有稍微复杂的逻辑的逻辑,在那里您可以期望一些输入的输出。请记住,有时您将测试行为,而不是输入/输出,这是模拟和存根可能派上用场的地方。
至于功能测试,您需要创建一些测试场景,比如带有指向将要创建的其他网页的链接的网页,并将它们设置在某个服务器上。然后,您需要在您创建的网页上执行爬行,并检查您的爬虫是否如预期的那样运行(您应该知道所期望的是什么,因为您将创建这些页面)。
此外,有时在单元测试和功能测试之间执行集成测试也是很好的。如果有一些组件协同工作(例如,使用重定向处理程序的取取程序),那么最好检查这两个组件是否按照预期的方式一起工作(例如,您可以在自己的服务器上创建资源,这样在获取时将返回重定向HTTP代码,并检查它是否按预期处理)。
所以,最后:
发布于 2014-01-18 12:00:36
单元测试验证您的代码在给定环境中是否实现了预期的功能。您应该确保所有其他变量都与您预期的一样,并测试您的单个方法。要对使用第三方API的方法这样做,您可能应该使用一个模拟库来模拟它们。通过模拟,您可以提供您期望的数据,并验证您的方法是否按预期工作。您还可以尝试分离您的代码,以便发出API请求的部分和解析/使用它的部分是分开的,并且使用您提供的某个API示例响应对第二部分进行单元测试。
https://stackoverflow.com/questions/21203648
复制相似问题