У меня есть функция промежуточного ПО, которая определяет 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 )
, но это похоже на взлом. Что, если тестируемое промежуточное ПО зависит от другого промежуточного ПО?