Django Testing - Как мне это сделать сейчас? - PullRequest
0 голосов
/ 29 октября 2010

Я использую Django на Twisted.У меня есть специальная переменная - мой двигатель, который передается на каждый запрос.Посмотрите на следующий код:

# Django setup
sys.path.append("shoout_web")
os.environ['DJANGO_SETTINGS_MODULE'] = 'shoout_web.settings'
from django.core.handlers.wsgi import WSGIHandler

def wsgi_resource():
    pool = threadpool.ThreadPool()
    pool.start()
    # Allow Ctrl-C to get you out cleanly:
    reactor.addSystemEventTrigger('after', 'shutdown', pool.stop)

    generic = WSGIHandler()
    def wrapper(environ, start_response):
        environ['engine'] = engine
        return generic(environ, start_response)

    wsgi_resource = wsgi.WSGIResource(reactor, pool, wrapper)
    return wsgi_resource

wsgi_root = wsgi_resource()

reactor.listenTCP(DJANGO_PORT, server.Site(wsgi_root, logPath=os.path.join(log_dir, '.django.log')))

Обратите внимание на строку "environment ['engine'] = engine". Сейчас я заинтересован в написании теста для всех моих представлений django.Как мне это сделать?

Пример функции просмотра:

def push_message(request):
    engine = request.META['engine'] 
    if request.method == "POST":
        user_hexid = request.session['user_hexid']
        room_hexid = request.POST['room_hexid']
        message_body = request.POST['message_body']
        ret = blockingCallFromThread( reactor, engine.push_public_message, user_hexid, room_hexid, message_body)
        return HttpResponse(cjson.encode( {'thread_hexid':ret} ))

РЕДАКТИРОВАТЬ: просто чтобы прояснить некоторые сомнения: я не думаю, что я могу установить этот двигатель в настройках, потому что двигатель на самом деле является скрученным серверомкоторый прослушивает определенный порт

1 Ответ

0 голосов
/ 29 апреля 2011

Очевидно, это не задокументировано, но, взглянув на код тестового клиента , вы можете передать дополнительные ключи окружения, используя аргумент ключевого слова defaults:

  client = Client(defaults={'engine': engine})
...