Browse Source

django tests

master
Julio Biason 9 years ago
parent
commit
80cc369554
  1. 147
      django.html

147
django.html

@ -48,16 +48,6 @@
<h1 class='semi-opaque'>Entendendo Django</h1> <h1 class='semi-opaque'>Entendendo Django</h1>
</section> </section>
<section>
<h2>Agenda</h2>
<ul>
<li>Entendendo Projeto</li>
<li>Entendendo Apps</li>
<li>Adicionando Apps no Projeto</li>
</ul>
</section>
<section> <section>
<section> <section>
<h2>Projeto</h2> <h2>Projeto</h2>
@ -127,24 +117,24 @@
</code></pre> </code></pre>
</section> </section>
<section> <section>
<h3>Outras coisas do manage.py</h3> <h3>Outras coisas do manage.py</h3>
<ul> <ul>
<li><code>python manage.py syncdb</code>: Cria as <li><code>python manage.py syncdb</code>: Cria as
tabelas necessárias e adiciona os dados tabelas necessárias e adiciona os dados
necessários.</li> necessários.</li>
<li><code>python manage.py makemigrations</code>: <li><code>python manage.py makemigrations</code>:
Verifica alterações em modelos e gera regras Verifica alterações em modelos e gera regras
para conversão do banco.</li> para conversão do banco.</li>
<li><code>python manage.py shell</code>: Shell de <li><code>python manage.py shell</code>: Shell de
acesso ao Django (na verdade, abre um acesso ao Django (na verdade, abre um
interpretador Python com um monte de coisas já interpretador Python com um monte de coisas já
carregadas/configuradas)</li> carregadas/configuradas)</li>
<li><code>python manage.py runserver</code>: Roda <li><code>python manage.py runserver</code>: Roda
um server de desenvolvimento.</li> um server de desenvolvimento.</li>
</ul> </ul>
</section> </section>
</section> </section>
<section> <section>
@ -374,7 +364,9 @@ fruit = Product.objects.get(name='fruit')
</code></pre> </code></pre>
<pre><code class="hljs"> <pre><code class="hljs">
all_fruits = Order.objects.filter(products__name__like='fruit') all_fruits_in_orders = Order.objects \
.filter(products__name__like='fruit') \
.distinct()
</code></pre> </code></pre>
</section> </section>
@ -408,31 +400,31 @@ print Products.order_set.all()
<code>related_name</code>.</p> <code>related_name</code>.</p>
</section> </section>
<section> <section>
<h2>Queries com AND</h2> <h2>Queries com AND</h2>
<p>Queries onde todas as condições devem ser <p>Queries onde todas as condições devem ser
satisfeitas podem ser feitas passando mais satisfeitas podem ser feitas passando mais
parametros em <code>filter</code>.</p> parametros em <code>filter</code>.</p>
<pre><code class="hljs"> <pre><code class="hljs">
all_expensive_fruits = Order.objects.filter( all_expensive_fruits = Order.objects.filter(
products__name__like='fruit', products__name__like='fruit',
price__gt=1000) price__gt=1000)
</code></pre> </code></pre>
</section> </section>
<section> <section>
<h2>Queryes com OR</h2> <h2>Queries com OR</h2>
<p>Para queries com OR, deve-ser usar o objeto <code>Q</code>.</p> <p>Para queries com OR, deve-ser usar o objeto <code>Q</code>.</p>
<pre><code class="hljs"> <pre><code class="hljs">
all_fruits_or_expensive = Order.objects.filter( all_fruits_or_expensive = Order.objects.filter(
Q(products__name__like='fruit') | Q(products__name__like='fruit') |
Q(price__gt=1000)) Q(price__gt=1000))
</code></pre> </code></pre>
</section> </section>
<section> <section>
<h2>Q</h2> <h2>Q</h2>
@ -638,6 +630,75 @@ def free(value):
</code></pre> </code></pre>
</section> </section>
</section> </section>
<section>
<section>
<h2>URLs/Redirects</h2>
<p>Redirects servem para indicar que o browser deve se
direcionar à outra URL.</p>
<p>Para referenciar URLs de outras apps (ou mesmo da
mesma app), deve-ser usar o método
<code>reverse</code>.</p>
<pre><code class="hljs">
from django.core.urlresolvers import reverse
from django.shortcuts import redirect
def view(request):
# do stuff
return redirect(reverse('app:func'))
</code></pre>
</section>
</section>
<section>
<section>
<h2>Testes</h2>
<p>Bem parecido com o módulo <code>unittest</code> do Python
padrão.</p>
<pre><code class="hljs">
import random
from django.test import TestCase
class RandomTest(TestCase):
def test_random(self):
"""Check if random numbers return random numbers."""
self.assertTrue(random.randint(255) != 0)
</code></pre>
</section>
<section>
<p>Testes podem acessar qualquer coisa (desde que importados):</p>
<ul>
<li>Modelos;</li>
<li>Views;</li>
<li>Requisições inteiras.</li>
</ul>
</section>
<section>
<pre><code class="hljs">
from django.test import Client
from django.test import TestCase
class RequestTest(TestCase):
def test_retrieve_page(self):
client = Client()
response = client.get('/')
self.assertTrue('success!' in response.content)
self.assertEquals(response.status_code, 200)
self.assertTrue('variable' in response.context)
self.assertEqual(response.context['variable'], 'success')
</code></pre>
</section>
</section>
</div> </div>
</div> </div>

Loading…
Cancel
Save