django :: вызов промежуточного программного обеспечения в тестах

У меня есть функция промежуточного ПО, которая определяет request.foo . Функция, которую я хочу протестировать, зависит от того, определяется ли foo из промежуточного программного обеспечения. Как мне проверить указанную функцию, если промежуточное ПО не запускается во время тестов?

На самом деле должна быть функция, которая принимает запрос, запускает запрос через все промежуточное ПО по порядку, затем выдает последний запрос (точно так же, как при передаче в представление). Существует ли такая функция?

Я мог бы вручную вызвать функцию промежуточного программного обеспечения, но это похоже на взлом. Что, если тестируемое промежуточное ПО зависит от другого промежуточного ПО? Я бы столкнулся с «адом промежуточного программного обеспечения».

функция промежуточного программного обеспечения:

class FooMiddleware():
    def process_request(self, request):
        req.foo = True if req.session.get('foo') in [1,2,3,4,5,6,7,8,9,10] else False

Вот функция, которую я хочу протестировать:

def getBaz(request):
    if request.foo == True:
        return something()
    else:
        return somethingElse()

Как мне проверить getBaz ?

<Возможность>

Я мог бы вручную запустить промежуточное ПО:

def test_getBaz(self):
    request = HttpRequest('/blarg')
    request.session['foo'] = 2

    middleware = FooMiddleware()
    request = middleware.process_request(request)

    value = getBaz(request)
    assertEqual( value, expected )

, но это похоже на взлом. Что, если тестируемое промежуточное ПО зависит от другого промежуточного ПО?

9
задан Alexander Bird 30 November 2010 в 05:04
поделиться