Herramientas de usuario

Herramientas del sitio


wiki2:python:django:tests

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
wiki2:python:django:tests [2018/10/12 13:19]
alfred creado
wiki2:python:django:tests [2020/08/29 15:11] (actual)
Línea 1: Línea 1:
-====== Django ​testing ​======+====== Django ​Testing ​======
 <​code>​ <​code>​
 class YourTestClass(TestCase):​ class YourTestClass(TestCase):​
Línea 23: Línea 23:
         self.assertEqual(1 + 1, 2)         self.assertEqual(1 + 1, 2)
 </​code>​ </​code>​
 +
 +====== RequestFactory ======
 +<​code>​
 +from django.test import TestCase, RequestFactory
 +from django.contrib.auth.models import AnonymousUser
 +from ..views import signup
 +...
 +self.req_factory = RequestFactory()
 +...
 +req = self.req_factory.get('/​users/​signup'​)
 +req.user = AnonymousUser()
 +# Test my_view() as if it were deployed at /​customer/​details
 +response = my_view(request)
 +# Use this syntax for class-based views.
 +response = MyView.as_view()(request)
 +self.assertEqual(response.status_code,​ 200)
 +</​code>​
 +
 +====== self.client ======
 +<​code>​
 +res = self.client.get('/​users/​signup'​)
 +</​code>​
 +<​code>​
 +self.client.force_login(User.objects.get_or_create(username='​testuser'​)[0])
 +self.client.login(...
 +</​code>​
 +====== Mail ======
 +<​code>​
 +from django.core import mail
 +    def test_send_mail_on_signup(self):​
 +        """​
 +        When a user signs up should receive an email
 +        """​
 +        email = '​test@test.com'​
 +        self.client.post('/​users/​signup',​ {
 +            '​username':​ '​usertest1',​
 +            '​email':​ email,
 +            '​password1':​ '​prueb4PRUEB4',​
 +            '​password2':​ '​prueb4PRUEB4'​
 +        })
 +        self.assertEqual(len(mail.outbox),​ 1)
 +        self.assertEqual(mail.outbox[0].to[0],​ email)
 +</​code>​
 +
 +
 +====== Articles ======
 +
 +===== N+1 Queries =====
 +
 +Lets imagine you are creating a view for returning all the courses with some of their authors data. If you run a code like this:
 +<code python>
 +queryset = Course.objects.all()
 +courses = []
 +for course in queryset:
 +  courses.append({"​title":​ course.title,​ "​author":​ course.author.name})
 +</​code>​
 +This is executing one query (for bringing all courses) and N queries more (one for each author). There is the library [[https://​github.com/​jmcarp/​nplusone|nplusone]] to detect this.
 +  * {{ :​wiki2:​python:​django:​automating_performance_testing_in_django.zip |}}
 +
wiki2/python/django/tests.1539350396.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)