Skip to content

Instantly share code, notes, and snippets.

@henriquebastos
Created December 27, 2011 16:59
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save henriquebastos/1524358 to your computer and use it in GitHub Desktop.
Save henriquebastos/1524358 to your computer and use it in GitHub Desktop.
Snippet para demonstrar validação de um form com range e valor entre eles.
from django import forms
from django.test import RequestFactory
class RangeForm(forms.Form):
min = forms.IntegerField()
max = forms.IntegerField()
valor = forms.IntegerField()
def clean(self):
min = self.cleaned_data.get('min')
max = self.cleaned_data.get('max')
valor = self.cleaned_data.get('valor')
if min > max:
raise forms.ValidationError(u"Limites inválidos")
if not min <= valor <= max:
raise forms.ValidationError(u"Valor fora dos limites")
# obedece o protocolo
return self.cleaned_data
def simpleview(request):
"A View"
form = RangeForm(request.POST)
if form.is_valid():
# faça o que vc quiser com o valor
print form.cleaned_data
else:
print form.errors
def post(**kwargs):
"Helper para simular um post"
req = RequestFactory().post('/dummy/', kwargs)
simpleview(req)
# Rodando...
post(min=1, max=10, valor=5)
post(min=6, max=10, valor=5)
post(min=1, max=4, valor=5)
post(min=5, max=10, valor=5)
post(min=1, max=5, valor=5)
post(min=5, max=5, valor=5)
post(min=6, max=5, valor=5)
@arruda
Copy link

arruda commented Jan 7, 2012

bacana o RequestFactory, não conhecia não, é melhor do que usar o TestClient?

@henriquebastos
Copy link
Author

A classe Cliente usada pelo TestCase herda do RequestFactory. Veja no código fonte.

O RequestFactory é útil para quando vc quer testar uma view diretamente. Em geral, não costumo fazer isso. Mesmo quando quero testar uma view sem depender do URLCONF do projeto (pq a view é de uma app plugável, por exemplo), prefiro usar um URLCONF específico para o teste.

@arruda
Copy link

arruda commented Jan 7, 2012 via email

@henriquebastos
Copy link
Author

henriquebastos commented Jan 7, 2012 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment