Как макетировать HTTP-запрос в сценарии модульного тестирования в Python

Я хотел бы включить веб-сервер для всех моих тестов, связанных с HTTP. Это не должно быть очень сложным. Я бы предпочел не зависеть от того, чтобы быть онлайн. Таким образом, я мог протестировать некоторые варианты моей программы.

Start the server Create a few resources (URI) with appropriate mime types, response code, etc. Run the tests (would be good to not have to start the server for each tests too) Shut down the server.

Любые намеки на этот код будут полезны. Я попробовал несколько вещей с BaseHTTPServer, но пока не увенчался успехом. Команда по проверке носа, кажется, ждет бесконечно.

import unittest
from foo import core

class HttpRequests(unittest.TestCase):
    """Tests for HTTP"""

    def setUp(self):
        "Starting a Web server"
        self.port = 8080
        # Here we need to start the server
        #
        # Then define a couple of URIs and their HTTP headers
        # so we can test the code.
        pass

    def testRequestStyle(self):
        "Check if we receive a text/css content-type"
        myreq = core.httpCheck()
        myuri = 'http://127.0.0.1/style/foo'
        myua = "Foobar/1.1"
        self.asserEqual(myreq.mimetype(myuri, myua), "text/css")

    def testRequestLocation(self):
        "another test" 
        pass

    def tearDown(self):
        "Shutting down the Web server"
        # here we need to shut down the server
        pass

спасибо за любую помощь

Update - 2012:07:10T02:34:00Z

Это код, который для данного веб-сайта будет возвращать список CSS. Я хочу проверить, возвращает ли он правильный список CSS.

import unittest
from foo import core

class CssTests(unittest.TestCase):
    """Tests for CSS requests"""

    def setUp(self):
        self.css = core.Css()
        self.req = core.HttpRequests()

    def testCssList(self):
        "For a given Web site, check if we get the right list of linked stylesheets"
        WebSiteUri = 'http://www.opera.com/'
        cssUriList = [
        'http://www.opera.com/css/handheld.css',
        'http://www.opera.com/css/screen.css',
        'http://www.opera.com/css/print.css',
        'http://www.opera.com/css/pages/home.css']
        content = self.req.getContent(WebSiteUri)
        cssUriListReq = self.css.getCssUriList(content, WebSiteUri)
        # we need to compare ordered list.
        cssUriListReq.sort()
        cssUriList.sort()
        self.assertListEqual(cssUriListReq, cssUriList)

Затем вfoo/core.py

import urlparse
import requests
from lxml import etree
import cssutils

class Css:
    """Grabing All CSS for one given URI"""


    def getCssUriList(self, htmltext, uri):
        """Given an htmltext, get the list of linked CSS"""
        tree = etree.HTML(htmltext)
        sheets = tree.xpath('//link[@rel="stylesheet"]/@href')
        for i, sheet in enumerate(sheets):
            cssurl = urlparse.urljoin(uri, sheet)
            sheets[i] = cssurl
        return sheets

Прямо сейчас код зависит от онлайн-сервера. Не должно. Я хочу иметь возможность добавлять множество различных типов комбинаций таблиц стилей и тестировать протокол, а затем некоторые параметры их разбора, комбинации и т. Д.

Ответы на вопрос(1)

Ваш ответ на вопрос