简单的网络服务器或网络的测试框架

问题描述:

需要测试用例复杂的Web应用程序,做一些互动与远程第三方CGI基于web服务。Iam计划在虚拟网络服务器上实现一些第三方服务,以便我可以完全控制测试用例。 寻找一个简单的python http webserver或框架来模拟第三方接口。简单的网络服务器或网络的测试框架

使用cherrypy,看一看的Hello World:

import cherrypy 

class HelloWorld(object): 
    def index(self): 
     return "Hello World!" 
    index.exposed = True 

cherrypy.quickstart(HelloWorld()) 

运行这段代码,你有一个非常快的Hello World服务器上localhost端口8080准备!很容易吧?

我会去了解一下Django

你可能是最幸福的一个WSGI服务,因为它是最喜欢CGI。

werkzeug

看看标准模块的wsgiref:

https://docs.python.org/2.6/library/wsgiref.html

在该页面的尽头是一个小例子。像这样的东西可能已经足够满足您的需求。

+0

+1:我同意,其中包括服务器的wsgiref大概够他的需求。 – nosklo 2009-04-22 12:22:18

这可能是简单意义上嘲笑(或存根,或任何期限)的urllib,或者你使用任何模块与远程网络服务进行通信?

甚至干脆重写urllib.urlopen可能就足够了:

import urllib 
from StringIO import StringIO 

class mock_response(StringIO): 
    def info(self): 
     raise NotImplementedError("mocked urllib response has no info method") 
    def getinfo(): 
     raise NotImplementedError("mocked urllib response has no getinfo method") 

def urlopen(url): 
    if url == "http://example.com/api/something": 
     resp = mock_response("<xml></xml>") 
     return resp 
    else: 
     urllib.urlopen(url) 


is_unittest = True 

if is_unittest: 
    urllib.urlopen = urlopen 

print urllib.urlopen("http://example.com/api/something").read() 

我用很相似here的东西,来模拟一个简单的API,之前,我有一个API密钥。