Monday, August 1, 2016

Testing an object

I've read and reread the tutorial and I'm working on writing a very simple banking app by copying and modifying what's in the tutorial. I've started a new project and copied what was on the first two pages of the tutorial and I've written a new models file. Make migrations works okay with the new models. I tried testing these new models using the test below and the console came up with an attribute error. Did I make a stupid mistake somewhere? Any help would be much appreciated.

Traceback (most recent call last):
  File "/home/DJapps/banking/mybank/banking/test_models.py", line 12, in test_animals_can_speak
    self.assertEqual(person.get_first_name(), 'Bob')
AttributeError: 'Person' object has no attribute 'get_first_name'


from django.test import TestCase
from banking.models import Person

class PersonTestCase(TestCase):
    def setUp(self):
        Person.objects.create(first_name="Bob", last_name="Smith", login_name="myname", password="Dog")

    def test_animals_can_speak(self):
        """Animals that can speak are correctly identified"""
        person = Person.objects.get(first_name="Bob")
        #person = mommy.make(Person)
        self.assertEqual(person.get_first_name(), 'Bob')
        #self.assertEqual(person.get_last_name(), 'Smith')
        #self.assertEqual(person.get_login_name(), 'myname')
        #self.assertEqual(person.get_password(), 'Dog')
        #self.assertEqual(person._str__, person_text)

New models...

from django.db import models

# Create your models here.
class Person(models.Model):
    first_name = models.CharField(max_length=4,default="Bob")
    last_name = models.CharField(max_length=6,default="Smith")
    login_name = models.CharField(max_length=3,default="me")
    password = models.CharField(max_length=7, default="password")
    person_text = models.CharField(max_length=10, default="Bob Smith")
   
def get_first_name(self):
    return self.first_name

def get_last_name(self):
    return self.last_name

def get_login_name(self):
    return self.login_name

def get_password(self, user_input):
    return self.password

def __str__(self):
    return self.person_text

class Account1(models.Model):
    account_number = models.IntegerField(default=12345678)
    bank_balance = models.DecimalField(max_digits=4, decimal_places=2, default=12.99)
    interest_rate = models.IntegerField(default=2)
    account_text = models.CharField(max_length=16, default="Current Account")
    person = models.ForeignKey(Person, on_delete=models.CASCADE, default="")
       

def get_account_number(self):
    return self.account_number

def get_bank_balance(self):
    return self.bank_balance

def deposit(self, amount):
    self.bank_balance = self.bank_balance + amount
    return

def get_interest_rate(self):
    return self.interest_rate

def withdraw(self, amount):
    self.bank_balance = self.bank_balance - amount
    return

def __str__(self):
    return self.account_text


--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/1b946075-f532-408f-ace7-4e4361ad350b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment