В настоящее время я пишу некоторые базовые тесты, чтобы гарантировать, что страницы в средстве Django среднего размера правильно загружаются и POSTing. Тем не менее, использование django.test.client.Client не надежно проваливается, когда это должно быть. Он возвращает ответ 302, даже если в моем коде явно были ошибки.
в моем приложении /urls.py:
url(r'^mymodel/create/$',
views.MyModelView.as_view(),
name = 'my_model_create'),
Затем, пытаясь преднамеренно создать ответ 500, я сделал следующее:
class MyModelCreateView(MyModelView, CreateView):
def post(self, request, *args, **kwargs):
print self.hello
self.object = MyModel()
return super(MyModelCreateView, self).post(request, *args, **kwargs)
Очевидно, что в представлении нет объекта с именем hello. Это происходит не так, как ожидалось при попытке отправить запрос через браузер.
и даже дошел до замены "print self.hello" на
return HttpResponse(status = 500)
и все же, я все еще получаю следующее:
#We have a model called Client, so it
#is imported as RequestClient to avoid conflicts
In [1]: from django.test.client import Client as RequestClient
In [2]: client = RequestClient()
In [3]: response = client.post("/app/mymodel/create/")
In [4]: response.status_code
Out[4]: 302
Ясно, что проблема здесь в том, что между клавиатурой и стулом, поскольку нет причин, по которым Client()/RequestClient() не должен возвращать ошибку 500, если все сделано правильно. Даже некоторые проблемы возникают, так как я получаю 302 ответа на запросы POST вместо 200 ответов, но это может быть потому, что мы используем HttpRedirect.
Кто-нибудь знает, что может быть проблемой здесь? Для справки я на Python 2.7 и Django 1.5 (хотя мне, возможно, придется быть совместимым с Django 1.4).