Я имел в виду учебник в https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Testing, когда работал над собственным модульным тестированием. Коды моего юнит теста ниже:
from django.core.urlresolvers import reverse
from django.test import Client, TestCase
from django.contrib.auth.models import User
from companies.models import Company
class ContactViewTest(TestCase):
def setUp(self):
self.client = Client(HTTP_HOST='localhost:8000')
company = Company(name='Test')
company.save()
user = User.objects.create(username='test_user1', email='test_user1@test.com')
user.set_password('password')
user.save()
self.user = user
self.company = company
def test_logged_in_all_contacts_correct_template(self):
c = self.client
user_login = c.login(username=self.user.username, password=self.user.password)
self.assertTrue(user_login)
resp = c.get(reverse('all-contacts'), follow=True)
# Check if user is logged in
self.assertEquals(str(resp.context['user']), 'test_user1')
# Check if response is "success"
self.assertEqual(resp.status_code, 200)
self.assertTemplateUsed(resp, 'all_contacts.html')
После запуска python manage.py test contacts.tests, я столкнулся с несколькими ошибками.
Первым является self.assertTrue(user_login)
, который возвращает AssertionError: False is not true
Второе существо self.assertEquals(str(resp.context['user']), 'test_user1')
, которое возвращает AssertionError: 'AnonymousUser' != 'test_user1'
, когда я удалил self.assertTrue(user_login)
Я не совсем уверен, что пошло не так, кроме client.login () не сработал, как я ожидал, так что заранее спасибо всем, кто может помочь.