get error class TestInformLogin has no attribute client
Question:
I wrote this code for testing views in django
when I run it i get the following error
response = self.clinet.get(self.inform_list_url)
AttributeError: ‘TestInformLogin’ object has no attribute ‘clinet’
from django.test import TestCase,Client
from django.urls import reverse
from KnowledgeManagement.models import Members , TblInform
class TestInformLogin(TestCase):
def set_up_create_user(self):
self.user = Members.objects.create(username='testuser',nationalCode = '1235' , mobileNumber = '094562', date_joined = '2021-11-22')
self.user.set_password('12345')
self.user.save()
self.clinet = Client()
self.clinet.login(username='testuser', password='12345')
self.inform_list_url = reverse('inform_list')
self.edit_inform_url = reverse('edit_inform', args= [1])
def test_inform_list_GET(self):
response = self.clinet.get(self.inform_list_url)
self.assertEquals(response.status_code,200)
self.assertTemplateUsed(response , 'inform_list.html')
def test_edit_inform_GET(self):
response = self.clinet.get(self.edit_inform_url)
self.assertEquals(response.status_code,200)
self.assertTemplateUsed(response , 'inform.html')
Answers:
self.clinet is defined in the set_up_create_user method, but I don’t think you ever call this method. That is why it is not defined. This should fix it…
I’m editing this to show what it would look like using setUp method.
class TestInformLogin(TestCase):
''' Dont forget your doc string '''
def setUp(self):
self.set_up_create_user()
def set_up_create_user(self):
self.user = Members.objects.create(username='testuser',nationalCode = '1235' , mobileNumber = '094562', date_joined = '2021-11-22')
self.user.set_password('12345')
self.user.save()
self.clinet = Client()
self.clinet.login(username='testuser', password='12345')
self.inform_list_url = reverse('inform_list')
self.edit_inform_url = reverse('edit_inform', args= [1])
def test_inform_list_GET(self):
response = self.clinet.get(self.inform_list_url)
self.assertEquals(response.status_code,200)
self.assertTemplateUsed(response , 'inform_list.html')
def test_edit_inform_GET(self):
response = self.clinet.get(self.edit_inform_url)
self.assertEquals(response.status_code,200)
self.assertTemplateUsed(response , 'inform.html')
Here your data is not set up when test_inform_list_GET() is called.
you can either change set_up_create_user() to setUp() or call set_up_create_user() inside test_inform_list_GET() and test_edit_inform_GET()
you can change set_up_create_user() to setUp() and it will run before the rest of the methods or call the set_up_create_user() inside each method
I wrote this code for testing views in django
when I run it i get the following error
response = self.clinet.get(self.inform_list_url)
AttributeError: ‘TestInformLogin’ object has no attribute ‘clinet’
from django.test import TestCase,Client
from django.urls import reverse
from KnowledgeManagement.models import Members , TblInform
class TestInformLogin(TestCase):
def set_up_create_user(self):
self.user = Members.objects.create(username='testuser',nationalCode = '1235' , mobileNumber = '094562', date_joined = '2021-11-22')
self.user.set_password('12345')
self.user.save()
self.clinet = Client()
self.clinet.login(username='testuser', password='12345')
self.inform_list_url = reverse('inform_list')
self.edit_inform_url = reverse('edit_inform', args= [1])
def test_inform_list_GET(self):
response = self.clinet.get(self.inform_list_url)
self.assertEquals(response.status_code,200)
self.assertTemplateUsed(response , 'inform_list.html')
def test_edit_inform_GET(self):
response = self.clinet.get(self.edit_inform_url)
self.assertEquals(response.status_code,200)
self.assertTemplateUsed(response , 'inform.html')
self.clinet is defined in the set_up_create_user method, but I don’t think you ever call this method. That is why it is not defined. This should fix it…
I’m editing this to show what it would look like using setUp method.
class TestInformLogin(TestCase):
''' Dont forget your doc string '''
def setUp(self):
self.set_up_create_user()
def set_up_create_user(self):
self.user = Members.objects.create(username='testuser',nationalCode = '1235' , mobileNumber = '094562', date_joined = '2021-11-22')
self.user.set_password('12345')
self.user.save()
self.clinet = Client()
self.clinet.login(username='testuser', password='12345')
self.inform_list_url = reverse('inform_list')
self.edit_inform_url = reverse('edit_inform', args= [1])
def test_inform_list_GET(self):
response = self.clinet.get(self.inform_list_url)
self.assertEquals(response.status_code,200)
self.assertTemplateUsed(response , 'inform_list.html')
def test_edit_inform_GET(self):
response = self.clinet.get(self.edit_inform_url)
self.assertEquals(response.status_code,200)
self.assertTemplateUsed(response , 'inform.html')
Here your data is not set up when test_inform_list_GET() is called.
you can either change set_up_create_user() to setUp() or call set_up_create_user() inside test_inform_list_GET() and test_edit_inform_GET()
you can change set_up_create_user() to setUp() and it will run before the rest of the methods or call the set_up_create_user() inside each method