下面的代码中有什么问题使得这个测试用例难以理解?
def test_get_balance(self):
settings = BankSettings(FDIC_INSURED, REGULATED, US_BASED)
account = Account(settings, ID, BALANCE, ADDRESS, NAME, EMAIL, PHONE)
self.assertEqual(account.GetBalance(), BALANCE)
问题在于,账户创建的代码中存在很多杂乱信息,很难分辨哪些细节与断言语句相关。
但是,从一个极端到另一个极端也会使得测试难以理解:
def test_get_balance(self):
account = _create_account()
self.assertEqual(account.GetBalance(), BALANCE)
这里的问题是,_create_account() 辅助函数中隐藏了关键细节,因此不清楚 BALANCE 字段来自何处。要理解这个测试用例,就需要切换上下文,深入研究辅助函数。
一个好的测试用例应该只包含与用例相关的细节,同时隐藏杂乱信息:
def test_get_balance():
account = _create_account(BALANCE)
self.assertEqual(account.GetBalance(), BALANCE)
通过这样的优化,测试的数据流动将更加清晰可见。例如: