Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
wiki2:python:django:tests [2018/10/12 13:56] alfred [RequestFactory] |
wiki2:python:django:tests [2020/08/29 15:11] (actual) |
||
|---|---|---|---|
| Línea 29: | Línea 29: | ||
| from django.contrib.auth.models import AnonymousUser | from django.contrib.auth.models import AnonymousUser | ||
| from ..views import signup | from ..views import signup | ||
| + | ... | ||
| self.req_factory = RequestFactory() | self.req_factory = RequestFactory() | ||
| + | ... | ||
| req = self.req_factory.get('/users/signup') | req = self.req_factory.get('/users/signup') | ||
| req.user = AnonymousUser() | req.user = AnonymousUser() | ||
| Línea 43: | Línea 45: | ||
| res = self.client.get('/users/signup') | res = self.client.get('/users/signup') | ||
| </code> | </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 |}} | ||
| + | |||