【发布时间】:2011-05-17 16:15:57
【问题描述】:
我有一个定义request.foo 的中间件函数。我要测试的函数取决于从中间件定义的 foo 。由于在测试期间没有运行中间件,我该如何测试所述功能?
确实应该有一个函数来接收请求,依次通过所有中间件运行请求,然后发出最终请求(就像传递给视图时一样)。有这样的功能吗?
我可以手动调用中间件函数,但这似乎是一个 hack。如果被测中间件依赖于另一个中间件怎么办?我会遇到“中间件地狱”。
中间件功能:
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 )
但这似乎是一个黑客行为。如果被测中间件依赖于另一个中间件怎么办?
/可能性>
【问题讨论】:
标签: django testing django-testing