【问题标题】:python test sending files over ftp [closed]python测试通过ftp发送文件[关闭]
【发布时间】:2012-01-11 06:43:11
【问题描述】:
我对测试知之甚少,我希望在以下情况下寻求指导 - 我有一段代码,它接受一些参数(文件名、路径等)并将指定的文件上传到远程 ftp 服务器。因此,测试的目的是检查文件是否上传到 ftp 服务器中的正确目录。
现在,我不认为我应该在我的测试脚本中涉及远程服务器,所以我应该在本地设置一个 ftp 服务器并模仿文件结构,还是在 python 中提供一个模拟 ftp 工具来促进这些场景?
另外,这是单元测试还是功能测试?
【问题讨论】:
标签:
python
unit-testing
testing
【解决方案2】:
我们进行了一些功能测试,这些测试确实会命中真正的 FTP 服务器,我们会在我们的暂存环境中继续运行该服务器。运行测试时,我们的 Django 项目的配置略有不同,因此它访问的是这个“测试”FTP 服务器,而不是我们的任何真实服务器或任何客户端。话虽如此,这些是我们运行速度最慢的测试之一,所以我希望重写它们以使用 localhost 上的 ftp 服务器,由需要它的测试启动和关闭。
模拟 ftp 服务器听起来是个好主意。迫不及待想尝试一下,谢谢@Bryce。一般而言,对于第三方服务器,确保您的模拟实际上与服务器 API 匹配可能会有问题,但对于 FTP,这似乎是稳定且易于理解的,这应该不是问题。
功能测试端到端调用您的整个系统,以检查用户可见的行为是否符合您的规范要求,以确保您的产品确实有效,因此您无论如何都可以自信地部署新版本更改代码包含的内容。功能测试的主要失败在于以不同于生产的方式执行产品代码(例如,仅运行部分代码,针对不同的数据库模式或供应商运行)它们通常使用真实数据,庞大且难以编写(数据库设置特别是),并且运行缓慢。通常很难编写足够的功能测试来验证您的整个程序对所有可能的输入排列的行为,如果您确实编写了它们,它们将永远运行。因此,您可以编写少量明智选择的功能测试来演示关键用户工作流程,然后通过单元测试对其进行扩充:
单元测试调用非常少量的代码,例如单个函数或方法。单元测试的主要目标是快速运行,并且易于编写,这样您就可以编写成百上千个,获得良好的覆盖率,并在提交之前最多在几秒钟内运行它们。 (或者甚至可能是每次您从编辑器中点击保存时。)单元测试的主要失败是缓慢。
听起来有点介于这两个极端之间的测试是集成测试,它不会端到端测试整个系统,但会测试多个层或组件是否正确集成。有时这些是有用的,或者是最容易编写的测试,但它们缺乏证明产品作为一个整体确实有效或运行速度非常快的主要优点。因此,我认为应该努力编写尽可能少的集成测试。 (我个人认为大多数项目的数字为零,但其他人不同意。)