国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

詳解Python的單元測試

2020-02-23 00:56:24
字體:
來源:轉載
供稿:網友

如果你聽說過“測試驅動開發”(TDD:Test-Driven Development),單元測試就不陌生。

單元測試是用來對一個模塊、一個函數或者一個類來進行正確性檢驗的測試工作。

比如對函數abs(),我們可以編寫出以下幾個測試用例:

    輸入正數,比如1、1.2、0.99,期待返回值與輸入相同;     輸入負數,比如-1、-1.2、-0.99,期待返回值與輸入相反;     輸入0,期待返回0;     輸入非數值類型,比如None、[]、{},期待拋出TypeError。

把上面的測試用例放到一個測試模塊里,就是一個完整的單元測試。

如果單元測試通過,說明我們測試的這個函數能夠正常工作。如果單元測試不通過,要么函數有bug,要么測試條件輸入不正確,總之,需要修復使單元測試能夠通過。

單元測試通過后有什么意義呢?如果我們對abs()函數代碼做了修改,只需要再跑一遍單元測試,如果通過,說明我們的修改不會對abs()函數原有的行為造成影響,如果測試不通過,說明我們的修改與原有行為不一致,要么修改代碼,要么修改測試。

這種以測試為驅動的開發模式最大的好處就是確保一個程序模塊的行為符合我們設計的測試用例。在將來修改的時候,可以極大程度地保證該模塊行為仍然是正確的。

我們來編寫一個Dict類,這個類的行為和dict一致,但是可以通過屬性來訪問,用起來就像下面這樣:

>>> d = Dict(a=1, b=2)>>> d['a']1>>> d.a1

mydict.py代碼如下:

class Dict(dict):  def __init__(self, **kw):    super(Dict, self).__init__(**kw)  def __getattr__(self, key):    try:      return self[key]    except KeyError:      raise AttributeError(r"'Dict' object has no attribute '%s'" % key)  def __setattr__(self, key, value):    self[key] = value

為了編寫單元測試,我們需要引入Python自帶的unittest模塊,編寫mydict_test.py如下:

import unittestfrom mydict import Dictclass TestDict(unittest.TestCase):  def test_init(self):    d = Dict(a=1, b='test')    self.assertEquals(d.a, 1)    self.assertEquals(d.b, 'test')    self.assertTrue(isinstance(d, dict))  def test_key(self):    d = Dict()    d['key'] = 'value'    self.assertEquals(d.key, 'value')  def test_attr(self):    d = Dict()    d.key = 'value'    self.assertTrue('key' in d)    self.assertEquals(d['key'], 'value')  def test_keyerror(self):    d = Dict()    with self.assertRaises(KeyError):      value = d['empty']  def test_attrerror(self):    d = Dict()    with self.assertRaises(AttributeError):      value = d.empty

編寫單元測試時,我們需要編寫一個測試類,從unittest.TestCase繼承。

以test開頭的方法就是測試方法,不以test開頭的方法不被認為是測試方法,測試的時候不會被執行。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 双牌县| 湟中县| 许昌县| 宝应县| 兴和县| 景泰县| 洛阳市| 黄陵县| 化州市| 玛沁县| 久治县| 东源县| 宁远县| 铜陵市| 廊坊市| 墨玉县| 岚皋县| 柳州市| 安徽省| 微山县| 敖汉旗| 渝中区| 公主岭市| 搜索| 龙陵县| 永年县| 通河县| 凤台县| 绥化市| 丰城市| 垦利县| 漳平市| 舒城县| 龙井市| 德惠市| 固原市| 赤城县| 陆良县| 汉阴县| 二手房| 安庆市|