Необходимо протестировать сложное веб-приложение, которое взаимодействует с удаленными сторонними веб-службами на основе cgi. Я планирую реализовать некоторые сторонние сервисы на фиктивном веб-сервере, чтобы иметь полный контроль над тестовыми наборами. Ищете простой http-сервер или фреймворк python для имитации стороннего интерфейса.
Простой веб-сервер или среда веб-тестирования
Ответы (5)
Используйте cherrypy, взгляните на Hello World:
import cherrypy
class HelloWorld(object):
def index(self):
return "Hello World!"
index.exposed = True
cherrypy.quickstart(HelloWorld())
Запустите этот код, и у вас будет очень быстрый сервер Hello World, готовый на localhost порту 8080 !! Довольно просто, да?
Возможно, вам больше всего понравится служба WSGI, поскольку она больше всего похожа на CGI.
Взгляните на werkzeug.
Взгляните на стандартный модуль wsgiref:
https://docs.python.org/2.6/library/wsgiref.html
В конце этой страницы приведен небольшой пример. Нечто подобное уже могло быть достаточно для ваших нужд.
Может быть, проще будет издеваться (или заглушить, или как там термин) 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()
Я использовал нечто очень похожее здесь для эмуляции простого API, прежде Получил API-ключ.