Мне 3 недели в программировании для самостоятельного изучения онлайн курса python. Цель состоит в том, чтобы расширить базовый класс BankAccount, в котором вы можете вывести столько, сколько хотите, подкласса MinimumBalanceAccount, где избыточные отбраки отклоняются. Вот то, что я до сих пор:Код передает ручные тесты, но сбой при модульном тестировании, возможно?
class BankAccount:
def __init__(self, balance):
self.balance = balance
def deposit(self, amount):
self.balance += amount
return self.balance
def withdraw(self, amount):
if(amount > self.balance):
print "invalid transaction."
else:
self.balance -= amount
return self.balance
class MinimumBalanceAccount(BankAccount):
def __init__(self, minimum_balance):
BankAccount.__init__(self, self.balance)
self.minimum_balance = minimum_balance
def withdraw(self, amount):
if(self.balance - amount < self.minimum_balance):
print "Minimum balance exceeded."
else:
self.balance -= amount
return self.balance
Поскольку онлайновый курс имеет онлайн особенности модульного тестирования, я написал следующее UnitTest из определения упражнения:
import unittest
class AccountBalanceTestCases(unittest.TestCase):
def setUp(self):
self.my_account = BankAccount(90)
# omitting tests that pass ok...
def test_invalid_operation(self):
self.assertEqual(self.my_account.withdraw(1000), "invalid transaction", msg='Invalid transaction')
unittest.main(verbosity=2)
Испытания, как ожидается, пройдет, но :
$ python bank2.py
test_invalid_operation (__main__.AccountBalanceTestCases) ... invalid transaction.
FAIL
======================================================================
FAIL: test_invalid_operation (__main__.AccountBalanceTestCases)
----------------------------------------------------------------------
Traceback (most recent call last):
File "bank2.py", line 36, in test_invalid_operation
self.assertEqual(self.my_account.withdraw(1000), "invalid transaction", msg='Invalid transaction')
AssertionError: Invalid transaction
----------------------------------------------------------------------
Ran 1 test in 0.001s
FAILED (failures=1)
$
Что я делаю неправильно?
Что точно не проходит? –
Обратите внимание, что одна очевидная ошибка заключается в том, что ваш метод вывода не возвращает недопустимое сообщение транзакции, как как инструкции, так и ваше тестовое состояние, вместо этого оно печатает. –
Это говорит мне, что ошибка в вашем коде. – user7479