python測試斷言

來源:互聯網
上載者:User

標籤: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測試斷言

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.