我正在努力模拟一个类中的属性。
我正在尝试模拟此portfolio
属性,该属性是我的另一个类的实例。
class Menu:
def __init__(self):
self.portfolio = DebtPortfolio()
具体如何在此方法中引用它。
def add_account(self):
"""
Description: Choice 1 of the main menu, asks user for input to add a
new account
:result: adds the account to the portfolio and returns to main menu
"""
account = DebtAccount(InputManager.get_valid_name_new(self.portfolio),
InputManager.get_valid_balance(),
InputManager.get_valid_interest())
self.portfolio.accounts.append(account)
print("\nAccount added successfully.\n")
self.main_navigation()
我需要测试使用该组合对象的此Menu类的几种方法。我已经能够修补方法调用,但我无法弄清楚如何修补该属性。
这是我最近的失败尝试。我试图让它将新帐户添加到我的模拟对象作品集。
def setUp(self):
self.folio = DebtPortfolio()
self.folio.accounts = [DebtAccount("t1", 12000, 5),
DebtAccount("t2", 3000, 20),
DebtAccount("t3", 6000, 10)]
self.menu = Menu()
@patch('src.main.InputManager.InputManager.get_valid_name_new')
@patch('src.main.InputManager.InputManager.get_valid_balance')
@patch('src.main.InputManager.InputManager.get_valid_interest')
def test_add_account(self, mock_name, mock_bal, mock_intrst):
with patch('src.main.Menu.Menu') as mock_menu:
mock_name.return_value = "t4"
mock_bal.return_value = 1000
mock_intrst.return_value = 15
mock_menu.portfolio = self.folio
account = self.menu.add_account()
self.assertTrue(account in mock_menu.portfolio.accounts)