2012-01-11 49 views
2

我在测试中很少的知识,我希望寻求在下列情况下的指导 - 我有一段代码,它发生在一些参数(文件名,路径等),并上传指定的文件到远程ftp服务器。因此,测试的目标是检查文件是否上传到ftp服务器中的正确目录。蟒蛇测试发送文件通过ftp

现在,我不认为我应该在我的测试脚本中包含远程服务器,所以我应该在本地设置ftp服务器并模仿文件结构,或者是否有Python中提供的模拟ftp工具来促进这些场景?

另外,这是单元测试或功能测试?

回答

4

也许最好保持现场远程服务器出来的图片。这就是说你可以上传,ftp下载,并且有很好的覆盖率。

确实是有在https://github.com/tarttelin/Python-Stub-Server

一个模拟的FTP服务器(顶部砸在谷歌)这是单元测试,考虑到功能测试中的简单性质。

0

我们有真正做到打击,我们一直运行作为我们的分段环境的一部分,真正的FTP服务器,一些功能测试。我们的Django项目的配置在运行测试时略有不同,因此它会碰到这个“测试”FTP服务器,而不是我们的真实服务器或任何客户端。话虽如此,这些都是我们运行速度最慢的测试之一,所以我打算重写它们以在本地主机上使用ftp服务器,并开始通过需要它的测试关闭它。

有模拟的FTP服务器听起来是个好主意。迫不及待地尝试一下,谢谢@Bryce。对于一般的第三方服务器来说,确定你的mock实际上与服务器API匹配可能会有问题,但对于FTP来说,这看起来很稳定并且足够好理解,这应该不成问题。

功能测试调用您的整个系统端到端,检查用户可见的行为是您的规格说明它应该是什么,以确保您的产品真正的工作,所以你可以放心地部署新版本,无论代码包含哪些变化。功能测试的主要缺陷是以与生产不同的方式来执行产品代码(例如,仅运行代码的一部分,针对不同的数据库模式或供应商运行)。它们通常使用真实数据,很大且难以编写(数据库设置特别是),并且运行速度慢。编写足够的功能测试来验证整个程序的行为对于所有可能的输入排列是非常困难的,而且如果你确实写了它们,它们将永远运行。相反,你写了一些明智选择的功能测试来演示关键的用户工作流程,然后用单元测试来扩充这些测试:

单元测试调用非常少量的代码,比如单个函数或方法。单元测试的主要目标是快速运行,并且易于编写,以便在您提交之前,您可以编写数百或数千个单元测试,获得良好的覆盖率,并在最多几秒内运行它们。 (或者甚至每次你从你的编辑器中获得保存)。单元测试的主要失败是缓慢的。

试验,这听起来像他们有点其间这两个极端都集成测试,不整个系统测试终端到终端的,但测试多个层或组件正确地集成。有时这些是有用的,或者是最简单的测试,但是它们缺乏证明整个产品实际工作或者运行速度非常快的主要优点。因此,我认为我们应该努力写出可以逃脱的最小数量的集成测试。 (我个人认为大多数项目的数字为零,但其他人不同意。)