我正在使用 Django,我需要編寫(xiě)一個(gè)需要計(jì)算的測(cè)試。手動(dòng)計(jì)算預(yù)期值是最佳做法還是可以使用 sum 函數(shù)來(lái)執(zhí)行此操作(見(jiàn)下文)這個(gè)例子對(duì)我來(lái)說(shuō)更容易,因?yàn)槲也槐厥謩?dòng)計(jì)算一些東西:def test_balance(self): amounts = [120.82, 90.23, 89.32, 193.92] for amount in amounts: self.mockedTransaction(amount=amount) total = Balance.total() self.assertEqual(total, sum(amounts))或者在這個(gè)例子中,我必須手動(dòng)計(jì)算期望值:def test_balance(self): self.mockedTransaction(amount=120.82) self.mockedTransaction(amount=90.23) self.mockedTransaction(amount=89.32) self.mockedTransaction(amount=193.92) total = Balance.total() self.assertEqual(total, 494.29)
1 回答

皈依舞
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
您的total
函數(shù)是否僅用于sum
獲取數(shù)字列表的總和?如果是這樣,則您的測(cè)試正在執(zhí)行與被測(cè)代碼相同的步驟。在這種情況下,第一個(gè)測(cè)試不會(huì)失敗。最好使用手動(dòng)生成的值。(如果total
只是 wrap sum
,那么我不會(huì)花很多時(shí)間擔(dān)心它。該功能已經(jīng)過(guò)徹底測(cè)試。)
如果Balance.total()
通過(guò)其他方法(如在數(shù)據(jù)庫(kù)上運(yùn)行的 SQL 查詢(xún))獲取其值,則可以在測(cè)試方法中計(jì)算預(yù)期值,特別是在對(duì)值列表求和等簡(jiǎn)單情況下。如果計(jì)算非常復(fù)雜,那么您可能希望回到手動(dòng)計(jì)算的值。否則,您的測(cè)試代碼可能與被測(cè)代碼一樣難以調(diào)試。
添加回答
舉報(bào)
0/150
提交
取消