如何正確引發此例外?
import unittest
def second_digit_value4(n): return True if n % 10 == 4 else False
class DigitValue4(unittest.TestCase):
def test_last_digit_value4(self):
self.assertEqual(second_digit_value4(14), True)
self.assertFalse(second_digit_value4(22), False)
with self.assertRaises(ValueError):
second_digit_value4(23)
if __name__ == '__main__':
unittest.main()
uj5u.com熱心網友回復:
由于該函式僅適用于 2 位正數,因此應檢查引數是否介于 10 和 99 之間。然后您應該使用該范圍之外的數字對其進行測驗。
import unittest
def second_digit_value4(n):
if 10 <= n <= 99:
return n % 10 == 4
raise ValueError("number must be 2 digits")
class DigitValue4(unittest.TestCase):
def test_last_digit_value4(self):
self.assertEqual(second_digit_value4(14), True)
self.assertFalse(second_digit_value4(22), False)
with self.assertRaises(ValueError):
second_digit_value4(123)
if __name__ == '__main__':
unittest.main()
uj5u.com熱心網友回復:
單元測驗不需要拋出錯誤。他們檢查事情是真是假,并根據結果,測驗通過或失敗。
將您的測驗修改為:
assertTrue(second_digit_value4(14), 'second_digit_value4 failed on 14')
assertFalse(second_digit_value4(22), 'second_digit_value4 failed on 22')
例外用于處理“意外”情況。您可以將函式修改為:
def second_digit_value4(n):
if not n.isnumeric():
raise ValueError("value must be a number")
if 10 <= n <= 99:
return n % 10 == 4
else:
raise ValueError("value out of range")
然后檢查是否拋出例外:
def test1(self):
with self.assertRaises(ValueError):
second_digit_value4('This is NaN')
您可以為超出范圍的例外添加另一個測驗。
它的作用是允許您的函式在不執行操作并回傳結果的情況下回傳,這在該輸入上是不可能的。
或者,您可以只回傳 NaN 而不是拋出。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/330930.html
