2014-02-13 27 views
2

我有这样的看法:Django的看法测试,RequestFactory数据

def send_results(request): 
    print request 
    if request.is_ajax(): 
     address = request.POST.get('url') 
    process_data(address) 
    context = get_all_from_database() 
    return HttpResponse(json.dumps(context), content_type='application/json') 

,我需要对其进行测试:

def test_send_results(self): 
     factory = RequestFactory() 
     request = factory.get('/views/send_results') 
     response = send_results(request) 
     self.assertEqual(response.status_code, 200) 

但它总是错误停止,我认为,“地址”值在分派之前被引用。如何传递它一些价值?

回答

4

如果request.is_ajax()False则在调用process_data(address)之前将不会分配address。如果你想测试一个AJAX请求,那么你应该通过HTTP_X_REQUESTED_WITH头:

request = factory.get('/views/send_results', HTTP_X_REQUESTED_WITH='XMLHttpRequest') 

但是你仍然需要解决您的视图时请求不是一个AJAX请求来处理这种情况。

+0

它仍然会引发错误:“NoneType”对象对同一行 – user3156971

+0

没有属性“超时”,那么你可能在你的'process_data'功能的错误。 –