Django 查看测试,请求工厂与数据



>我有这个观点:

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)

但在我看来,在分配之前引用"地址"值总是出错。如何传递它一些值?

如果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 请求时,您仍然需要修复视图以处理这种情况。

最新更新