我的python应用程序使用urllib2向很多urls发出很多http请求。我想构建一个单元测试套件来测试我的数据解析和错误处理代码。测试urllib2应用程序,从文件加载的http响应
我有一个充满测试数据的目录,其中包含大量文件,每个文件都包含一个http响应,包含标题和响应数据。 (使用curl -i)在某些情况下,这些文件包含http错误消息(需要测试错误处理)
理想情况下,我想创建一个模拟对象来替换urllib2.urlopen并返回一个模拟响应对象。
我想知道如果有一个简单的方法有直接的urllib2从文件加载的HTTP响应,并具有urllib2的解析这个数据来创建相应的响应对象(好像响应是从URL中读取。
我尝试使用的URL与构建“文件://”的协议,但HTTP响应头在文件的顶部不读也不能正确解析
或者我正在考虑写一个小web服务器类服务。测试文件,但是这似乎比我想要的多一点工作,让urllib2以某种方式重建我已经保存在文件中的http响应的响应对象会更容易(不必建立一个Web服务器再次提供服务)
任何想法?
尽管对于简单的测试来说很容易,但对于*单元测试来说,启动服务器通常不是一个好的方法(一个新的进程),嘲笑外部实体和功能是最好的方法。对于许多其他类型的测试,这是一个不错的选择。一个原因不是太强大,但downvote! – 0xc0de 2015-12-02 09:38:52
我同意,一个适当的模拟解决方案将更好地整体工作。我只是在回应这样的陈述,即做太多的工作。就快速启动和运行而言,这可能是最简单的事情。从长远来看,这绝对不是最好的,我根本就没有争论过 – entropy 2015-12-03 10:46:17