2014-01-18 31 views
3

对不起,如果这是一个非常愚蠢的问题,但我一直在寻找年龄,只是无法弄清楚。Python - 单元测试

所以我有一个关于单元测试的问题,不一定是关于Python的问题,但是因为我正在使用Python,所以我选择了基于它的问题。

我得到了单元测试的想法,但唯一能在互联网上找到的就是非常简单的单元测试。就像测试方法总和(a,b)是否返回a + b的总和一样。

但是,如何在处理更复杂的程序时应用单元测试?作为一个例子,我写了一个爬虫程序。我不知道它会返回什么,否则我不需要爬虫。那么,我怎么才能测试一下抓取工作正常,而不知道该方法会返回什么?

在此先感谢!

回答

4

整个抓取工具可能会在功能上进行测试(我们会到达那里)。至于单元测试,你可能已经为你的爬虫编写了几个组件,比如页面解析器,url识别器,fetcher,重定向处理器等。这些是你的UNITS。你应该对它们中的每一个进行单元测试,或者至少对那些至少有些复杂的逻辑进行测试,在那里你可以期待某些输出的输入。请记住,有时你会测试行为,而不是输入/输出,这是模拟和存根可能派上用场的地方。

至于功能测试 - 您需要创建一些测试场景,例如带有您要创建的其他网页的链接的网页,并在某些服务器上进行设置。然后,您需要在您创建的网页上执行抓取,并检查抓取工具是否按预期行事(您应该知道该期待什么,因为您将创建这些网页)。

另外,有时在单元和功能测试之间执行集成测试是很好的。如果您有一些组件一起工作(例如使用重定向处理程序的fetcher),检查这两者是否按预期一起工作是很好的(例如,您可以在您自己的服务器上创建资源,在获取时会返回重定向HTTP代码,以及检查是否按预期处理)。

那么,到底:

  • 创建创建应用程序,就看你有没有做简单的错误

  • 创造协同工作的组件集成测试的组件单元测试,看看你是否把所有东西粘在一起就好了

  • 创建功能测试,确保你的应用程序能按预期工作(因为一些错误可能来自项目,而不是来自实施)

+0

谢谢,它现在更有意义了! – SergioP

0

单元测试验证您的代码是否符合您在给定环境中的预期。你应该确保所有其他变量都像你期望的那样,并测试你的单一方法。要为使用第三方API的方法做到这一点,您应该使用模拟库来嘲笑它们。通过嘲笑您提供您期望的数据并验证您的方法是否按预期工作。您还可以尝试分离您的代码,以便使得API请求的部分和解析/使用它的部分是分开的,并且使用您提供的特定API示例响应对第二部分进行单元测试。