0

您好我正在尝试在我的 django python 应用程序中实现行为测试框架。但是不确定问题是什么,我一直被拒绝连接。

以下是 features/environment.py 的内容:

import os
import django
import urlparse
os.environ['DJANGO_SETTINGS_MODULE'] = 'tilesproj.settings'
django.setup()


def before_all(context):
    from django.test.runner import DiscoverRunner
    context.runner = DiscoverRunner()
    import wsgi_intercept
    from django.core.handlers.wsgi import WSGIHandler
    host = context.host = 'localhost'
    port = context.port = 8000
    from django.core.wsgi import get_wsgi_application
    from wsgiref.simple_server import make_server
    application = get_wsgi_application()
    wsgi_intercept.add_wsgi_intercept(host, port, lambda: application)
    import mechanize
    context.browser = mechanize.Browser()

    def browser_url(url):
        return urlparse.urljoin('http://%s:%d/' % (host, port), url)

    context.browser_url = browser_url

    from BeautifulSoup import BeautifulSoup
    def parse_soup():
        r = context.browser.response()
        html = r.read()
        r.seek(0)
        return BeautifulSoup(html)

    context.parse_soup = parse_soup


def before_scenario(context, scenario):
    context.runner.setup_test_environment()
    context.old_db_config = context.runner.setup_databases()


def after_scenario(context, scenario):
    context.runner.teardown_databases(context.old_db_config)
    context.runner.teardown_test_environment()

我试图弄清楚如何在运行行为脚本时引导我的 django 应用程序,以便测试我的网络应用程序。

4

1 回答 1

0

您应该尝试网站上的示例 Django Behave 配置。本质上,您使用假浏览器来执行实际上并未通过真实网站的请求。您的连接被拒绝,因为没有真正的服务器可以连接。

所以你应该从 mechanize 获取 mechanize 浏览器,wsgi_intercept而不是直接从 mechanize 获取:

### Set up the Mechanize browser.
from wsgi_intercept import mechanize_intercept
# MAGIC: All requests made by this monkeypatched browser to the magic
# host and port will be intercepted by wsgi_intercept via a
# fake socket and routed to Django's WSGI interface.
browser = context.browser = mechanize_intercept.Browser()
于 2015-02-12T14:43:50.613 回答