python unittest错误表明没有透支

时间:2017-01-20 18:34:54

标签: python oop python-unittest

我一直在进行测试,每次运行代码时都会显示以下错误代码:

  

test_savings_account_cannot_withdraw_more_than_current_balance失败   在第48行,在   test_savings_account_cannot_withdraw_more_than_current_balance   self.assertEquals(消息,'不能退出当前帐户   平衡',msg ='没有透支')AssertionError:没有透支**

class BankAccount:
    def withdraw(self):
        pass

    def deposit(self):
        pass

class SavingsAccount(BankAccount):
    def __init__(self, balance=500):
        self.balance = balance

    def deposit(self, amount):
        if (amount <= 0):
            return "Invalid deposit amount"
        else:
            self.balance += amount
        return self.balance

    def withdraw(self, amount):
        if(amount <= 0):
            return "Invalid withdraw amount"
        elif(self.balance <= 500):
            return "Cannot withdraw beyond the minimum account balance"
        elif(amount > self.balance):
            return "Cannot withdraw beyond the current account balance"
        else:
            self.balance -= amount
            return self.balance    


class CurrentAccount(BankAccount):
    def __init__(self, balance=0):
        self.balance = balance

    def deposit(self, amount):
        if (amount <= 0):
            return "Invalid deposit amount"
        else:
            self.balance += amount
            return self.balance

    def withdraw(self, amount):
        if (amount <= 0):
            return "Invalid withdraw amount"
        elif (amount >= self.balance):
            return "Cannot withdraw beyond the current account balance"
        else:
        self.balance -= amount
        return self.balance

并且unittest是

import unittest

class CurrentAccountTestCases(unittest.TestCase):
    def setUp(self):
        self.ca = CurrentAccount()

    def tearDown(self):
        del self.ca

    def test_current_account_is_instance_of_bank_account(self):
        self.assertTrue(isinstance(self.ca, BankAccount), msg='CurrentAccount is not a subclass of BankAccount')

    def test_current_account_can_deposit_valid_amounts(self):
        balance = self.ca.deposit(1500)
        self.assertEquals(balance, 1500)

    def test_current_account_cannot_withdraw_more_than_current_balance(self):
      message = self.ca.withdraw(1500)
      self.assertEquals(message, 'Cannot withdraw beyond the current account balance', msg='No overdrafts')

    def test_current_account_can_withdraw_valid_cash_amounts(self):
        self.ca.deposit(23001)
        self.ca.withdraw(437)
        self.assertEquals(self.ca.balance, 22564, msg='Incorrect balance after withdrawal')

class SavingsAccountTestCases(unittest.TestCase):
    def setUp(self):
self.sa = SavingsAccount()

    def tearDown(self):
      del self.sa

    def test_savings_account_is_instance_of_bank_account(self):
      self.assertTrue(isinstance(self.sa, BankAccount), msg='SavingsAccount is not a subclass of BankAccount')

    def test_savings_account_can_deposit_valid_amounts(self):
      init_balance = self.sa.balance
      balance = self.sa.deposit(1500)
      self.assertEquals(balance, (1500 + init_balance), msg='Balance does not match deposit')

    def test_savings_account_cannot_withdraw_more_than_current_balance(self):
      message = self.sa.withdraw(1500)
      self.assertEquals(message, 'Cannot withdraw beyond the current account balance', msg='No overdrafts')

    def test_savings_account_can_withdraw_valid_amounts_successfully(self):
      self.sa.deposit(2300)
      self.sa.withdraw(543)
      self.assertEquals(2257, self.sa.balance, msg="Incorrect balance after withdrawal")

1 个答案:

答案 0 :(得分:1)

由于您的默认余额为500,而您的金额为1500,因此您返回的字符串为&#34;无法提取超出最低帐户余额&#34;而不是你期望的那个&#34;不能超过当前账户余额&#34;