Created
December 27, 2011 16:59
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
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.
Saquei, tambm no sabia do lance de configurar o URLCONF pro test no. Eu
ficava pensando como faria pra app plugavel mas no cheguei a pesquisar
direito sobre isso.
To s comeando a parte de Teste no django e to achando muito boa.
## Vlw
Felipe Arruda Pontes
arruda.blog.br
Em 7 de janeiro de 2012 02:56, Henrique Bastos <
reply@reply.github.com
… escreveu:
A classe `Cliente` usada pelo `TestCase` herda do `RequestFactory`. Veja
no [cdigo fonte](https://github.com/django/django/blob/master/django/test/client.py#L320).
O `RequestFactory` til para quando vc quer testar uma view diretamente.
Em geral, no costumo fazer isso. Mesmo quando quero testar uma view sem
depender do `URLCONF` do projeto (pq a view de uma app plugvel, por
exemplo), prefiro usar um [URLCONF especfico para o teste](https://docs.djangoproject.com/en/dev/topics/testing/#urlconf-configuration).
---
Reply to this email directly or view it on GitHub:
https://gist.github.com/1524358
Legal! Vamos parear para trocar umas figurinhas?! Me adiciona no skype e gtalk.
## []'s,
Henrique Bastos
+55 21 9618-6180
http://henriquebastos.net
http://twitter.com/henriquebastos
…On 07/01/2012, at 15:07, Felipe Arruda ***@***.*** wrote:
Saquei, tambm no sabia do lance de configurar o URLCONF pro test no. Eu
ficava pensando como faria pra app plugavel mas no cheguei a pesquisar
direito sobre isso.
To s comeando a parte de Teste no django e to achando muito boa.
## Vlw
Felipe Arruda Pontes
arruda.blog.br
Em 7 de janeiro de 2012 02:56, Henrique Bastos <
***@***.***
> escreveu:
>
> A classe `Cliente` usada pelo `TestCase` herda do `RequestFactory`. Veja
> no [cdigo fonte](https://github.com/django/django/blob/master/django/test/client.py#L320).
>
> O `RequestFactory` til para quando vc quer testar uma view diretamente.
> Em geral, no costumo fazer isso. Mesmo quando quero testar uma view sem
> depender do `URLCONF` do projeto (pq a view de uma app plugvel, por
> exemplo), prefiro usar um [URLCONF especfico para o teste](https://docs.djangoproject.com/en/dev/topics/testing/#urlconf-configuration).
> ---
>
> Reply to this email directly or view it on GitHub:
> https://gist.github.com/1524358
---
Reply to this email directly or view it on GitHub:
https://gist.github.com/1524358
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
bacana o RequestFactory, não conhecia não, é melhor do que usar o TestClient?