標籤:user 排錯 python san 異常 mit 模組 class 運行
這幾天看了一下python的測試,基於函數方法和基於類的測試,主要使用的模組是unittest模組,為特定的方法和類,建立測試模組,測試函數功能是否滿足預期。下面是模仿書裡面的一個例子。
City.py模組
def city(city_name,country_name): full_city_name = city_name +‘,‘+country_name return full_city_name
為這個模組建立一個測試模組,主要是為了測試這個city方法是否能夠滿足預期。
assert模組
import unittestfrom City import cityclass Testcity(unittest.TestCase): def test_city(self): city_name = ‘Santiago‘ country_name = ‘Chile‘ full_city_name = city(city_name,country_name) print(full_city_name) self.assertEqual(full_city_name,‘Santiago,Chile‘) # self.assertEqual(4+5,9)if __name__ == ‘__main__‘: unittest.main()
主要就是匯入unittest模組,然後定義一個測試類別,繼承unittest.TestCase,在測試類別中定義測試方法,針對於被測試方法,編寫測試案例,然後assert斷言,查看輸入,如果在運行過程中出現報錯,則證明模組功能有問題,需要修改功能。如果測試沒有問題,則證明測試能夠通過,功能模組沒有問題。
這就是測試成功的結果,如果測試部成果,如所示。
會拋出一個異常,在斷言的地方。然後可以根據這個異常,來進行排錯。
一般編寫的代碼,都需要經過測試之後,才能正常使用。避免複雜的人工測試,assert斷言能夠做到自動化,一旦有報錯,則直接能判斷功能是否正常。
下面是一個對類的測試斷言,寫在同一個模組中,只是為了說明測試方法。
class Employee(): def __init__(self,first_name,last_name,salary): self.first_name = first_name self.last_name = last_name self.salary = int(salary) def give_raise(self,raise_default = 5000): self.salary += raise_defaultclass TestClassEmployee(unittest.TestCase): def setUp(self): self.username = Employee(‘John‘,‘Smith‘,‘60000‘) def test_give_default_raise(self): self.username.give_raise() new_raise = 65000 self.assertEqual(new_raise,self.username.salary) def test_give_custom_raise(self): self.username.give_raise(7000) new_raise = 67000 self.assertEqual(new_raise, self.username.salary)
if __name__ == ‘__main__‘: unittest.main()
定義了一個員工類,需要知道員工的名字和薪水,同時定義了一個漲工資方法,預設值是5000,在定義測試類別的時候,首先定義了個測試對象,通過setUp方法,生產測試對象,後續的測試方法中,可以通過該測試對象來做測試。定義了兩個測試方法,預設值和自訂值。測試結果如下:
python測試斷言