【问题标题】:Python - Banking project with test casesPython - 带有测试用例的银行项目
【发布时间】:2021-10-03 17:56:45
【问题描述】:

我是编程初学者,我刚开始我的编程课程。我们正在研究 OOP,而我正在为一个银行项目而苦苦挣扎。

基本上,我们已经获得了测试用例来测试我们的代码是否正常工作。我们将不得不为项目的第二部分编写自己的测试用例。

我目前对给定测试用例的问题是我无法通过最后一项检查成功传输方法的测试。

我已经编写了我的转账方法,并在我的 BankAccount 模块上对其进行了测试,并且似乎正在执行预期的操作:从 account1 提取资金并将其转移到 account2。但是,测试用例仍然失败。

据我所知,测试用例正在查看以下 3 个条件:提款账户的账户余额、存款账户的账户余额和转账金额。

知道我是否在这里遗漏了什么吗?

以下是我的存款和转账方式

#Method to process money deposits. Receives deposit_amount variable (float) and return class variable account_balance incremented by deposit amount
def deposit (self,deposit_amount):
    self.account_balance += deposit_amount


#Method to make money transfers. Receives account (obj) and amount_transferred (float) arguments. Returns amount of money transferred if
#enough funds, otherwise returns None

def transfer (self, account, amount):
    if amount > 0 and amount <= account.account_balance:
        self.account_balance -= amount
        account.deposit(amount)
    else:
        return None

现在,下面是检查转移成功的测试用例

# Test BANK_ACCOUNT_TEST_7: Tests transfer method for success.
amount_transferred = account_1.transfer(account_2, 20.0)
if account_1.get_balance() != 40.65 or account_2.get_balance() != 50.0 or amount_transferred != 20.0:
    print('FAILED BANK_ACCOUNT_TEST_7')
    return 7

我已经进行了几次试验,但仍然失败了 BANK_ACCOUNT_TEST_7。

【问题讨论】:

  • 当您写:amount_transferred = account_1.transfer(account_2, 20.0) 时,您似乎希望transfer() 会返回转账金额,但事实并非如此。
  • 最好的银行我准备在里面开一个新账户,并会要求其他人做交易..这家银行是为富人准备的 如果我的账户金额较少,它总是会失败 疯狂的银行 XD 没有一个可以给我钱。 ??????
  • 你的 if condn 是错误的 mate amount

标签: python oop


【解决方案1】:

检查你的传输逻辑..查看更新的逻辑..建议:尝试使用getter setter方法而不是直接使用对象变量。 (在当前解决方案中没有使用 getter setter。)

def transfer (self, account, amount):
    if amount > 0 and amount <= self.account_balance:
        self.account_balance -= amount
        account.deposit(amount)
        return amount
    else:
        return None

【讨论】:

  • 非常感谢!我在尝试了解何时使用 self.account_balance 以及何时使用 account.account_balance 时遇到了很多问题。我知道这可能看起来很傻,但我很难学会这两个概念以及如何正确使用它们。
  • @CristianA :以工厂创建盒子为例。关于盒子的信息那个盒子有多个架子......现在类是你关于盒子的全部信息,盒子的外观,它具有的功能(如流水线工厂机器){simple word blueprint}。现在,当您创建一个新对象时,意味着您已经创建了一个具有与我们被告知要制作的相同功能的新盒子。 box 如何通过使用 self 来访问它的功能(简单来说就是我的/我的)。当您使用 self 时,您是在说 box 可以访问属于它的所有内容。(我的)(忽略语法错误)
猜你喜欢
  • 1970-01-01
  • 2022-07-28
  • 1970-01-01
  • 1970-01-01
  • 2020-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
相关资源
最近更新 更多