Hello PyUnitTest

PyUnitTest是什么

作為標(biāo)準(zhǔn)python中的一個模塊笼平,是其它框架和工具的基礎(chǔ)咙俩,參考資料是它的官方文檔:http://docs.python.org/2.7/library/unittest.html和源代碼,文檔已經(jīng)寫的非常好了,我在這里記錄的主要是它的一些重要概念、關(guān)鍵點以及可能會碰到的一些坑,目的在于對unittest加深理解酵熙,而不是停留在泛泛的表面層上。
unittest是一個python版本的junit弯淘,junit是java中的單元測試框架绿店,對java的單元測試,有一句話很貼切:Keep the bar green庐橙,相信使用eclipse寫過java單元測試的都心領(lǐng)神會假勿。unittest實現(xiàn)了很多junit中的概念,比如我們非常熟悉的test case, test suite等态鳖,總之转培,原理都是相通的,只是用不同的語言表達(dá)出來浆竭。

這里吐槽一下浸须,我其實是想研究Appium對移動端的自動化測試惨寿,結(jié)果發(fā)現(xiàn)Appium是基于selenium發(fā)展過來的,Python調(diào)用selenium自動化測試有比較詳細(xì)的文檔删窒,而Appium文檔實在是太少太少裂垦,于是我就順著Appium看到了selenium〖∷鳎看著看著發(fā)現(xiàn)蕉拢,要執(zhí)行selenium的自動化測試,必須要了解測試框架诚亚。于是又開始研究這個Python的unittest測試框架晕换。

第一個例子

程序語言都喜歡使用helloworld來開始,這個框架我們也使用這個來作例子吧站宗。

# -*- coding: utf-8 -*-
import unittest

def hello():
    return "hello world"

class testNum(unittest.TestCase):
    def testHello(self):
        self.assertEqual("hello world",hello())


if __name__ == '__main__':
    unittest.main()

上面是一個很簡單的測試?yán)诱⒆肌_\行的結(jié)果如下:

.
----------------------------------------------------------------------
Ran 1 tests in 0.000s

OK
[Finished in 0.1s]

我們來分析一下這個代碼

# -*- coding: utf-8 -*-
import unittest

編碼類型使用UTF8,引用unittest模塊梢灭,unittest是Python自帶的模塊夷家,無需另外安裝

def hello():
    return "hello world"

功能函數(shù),返回hello world或辖,也是我們的被測試函數(shù)

class testNum(unittest.TestCase):
    def testHello(self):
        self.assertEqual("hello world",hello())

測試函數(shù)瘾英,繼承unittest.TestCase枣接。里面所有的測試案例都使用test開頭颂暇,里面的方法self.assertEqual()表示斷言兩個值相等比如調(diào)用hello()函數(shù),我們得到的結(jié)果就是hello world但惶。和我們給的預(yù)期值相同耳鸯。運行結(jié)果就是成功。如果運行失敗膀曾,會顯示下面的東西

F
======================================================================
FAIL: testHello (__main__.testNum)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/svenweng/Desktop/Development/unittest/testcal.py", line 21, in testHello
    self.assertEqual("hello word",hello())
AssertionError: 'hello word' != 'hello world'

----------------------------------------------------------------------
Ran 1 tests in 0.000s

FAILED (failures=1)
[Finished in 0.1s with exit code 1]
[shell_cmd: python -u "/Users/svenweng/Desktop/Development/unittest/testcal.py"]
[dir: /Users/svenweng/Desktop/Development/unittest]
[path: /usr/bin:/bin:/usr/sbin:/sbin]

錯誤提示很明確县爬。AssertionError: 'hello word' != 'hello world'

其他方法

assertEqual(a, b) a == b
assertNotEqual(a, b) a != b
assertTrue(x) bool(x) is True
assertFalse(x) bool(x) is False
assertIs(a, b) a is b 2.7
assertIsNot(a, b) a is not b 2.7
assertIsNone(x) x is None 2.7
assertIsNotNone(x) x is not None 2.7
assertIn(a, b) a in b 2.7
assertNotIn(a, b) a not in b 2.7
assertIsInstance(a, b) isinstance(a, b) 2.7
assertNotIsInstance(a, b) not isinstance(a, b) 2.7

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市添谊,隨后出現(xiàn)的幾起案子财喳,更是在濱河造成了極大的恐慌,老刑警劉巖斩狱,帶你破解...
    沈念sama閱讀 212,332評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耳高,死亡現(xiàn)場離奇詭異,居然都是意外死亡所踊,警方通過查閱死者的電腦和手機泌枪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,508評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秕岛,“玉大人碌燕,你說我怎么就攤上這事误证。” “怎么了修壕?”我有些...
    開封第一講書人閱讀 157,812評論 0 348
  • 文/不壞的土叔 我叫張陵愈捅,是天一觀的道長。 經(jīng)常有香客問我慈鸠,道長改鲫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,607評論 1 284
  • 正文 為了忘掉前任林束,我火速辦了婚禮像棘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘壶冒。我一直安慰自己缕题,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,728評論 6 386
  • 文/花漫 我一把揭開白布胖腾。 她就那樣靜靜地躺著烟零,像睡著了一般。 火紅的嫁衣襯著肌膚如雪咸作。 梳的紋絲不亂的頭發(fā)上锨阿,一...
    開封第一講書人閱讀 49,919評論 1 290
  • 那天,我揣著相機與錄音记罚,去河邊找鬼墅诡。 笑死带猴,一個胖子當(dāng)著我的面吹牛桶良,可吹牛的內(nèi)容都是我干的败匹。 我是一名探鬼主播棒厘,決...
    沈念sama閱讀 39,071評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼煤辨,長吁一口氣:“原來是場噩夢啊……” “哼瓦戚!你這毒婦竟也來了紫谷?” 一聲冷哼從身側(cè)響起轿亮,我...
    開封第一講書人閱讀 37,802評論 0 268
  • 序言:老撾萬榮一對情侶失蹤刊驴,失蹤者是張志新(化名)和其女友劉穎姿搜,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捆憎,經(jīng)...
    沈念sama閱讀 44,256評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡舅柜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,576評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了攻礼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片业踢。...
    茶點故事閱讀 38,712評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖礁扮,靈堂內(nèi)的尸體忽然破棺而出知举,到底是詐尸還是另有隱情瞬沦,我是刑警寧澤雇锡,帶...
    沈念sama閱讀 34,389評論 4 332
  • 正文 年R本政府宣布逛钻,位于F島的核電站,受9級特大地震影響锰提,放射性物質(zhì)發(fā)生泄漏曙痘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,032評論 3 316
  • 文/蒙蒙 一立肘、第九天 我趴在偏房一處隱蔽的房頂上張望边坤。 院中可真熱鬧,春花似錦谅年、人聲如沸茧痒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旺订。三九已至,卻和暖如春超燃,著一層夾襖步出監(jiān)牢的瞬間区拳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,026評論 1 266
  • 我被黑心中介騙來泰國打工意乓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留樱调,地道東北人。 一個月前我還...
    沈念sama閱讀 46,473評論 2 360
  • 正文 我出身青樓洽瞬,卻偏偏與公主長得像本涕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子伙窃,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,606評論 2 350

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)样漆,斷路器为障,智...
    卡卡羅2017閱讀 134,637評論 18 139
  • Startup 單元測試的核心價值在于兩點: 更加精確地定義某段代碼的作用,從而使代碼的耦合性更低 避免程序員寫出...
    wuwenxiang閱讀 10,090評論 1 27
  • 本書首次探索了游戲化的力量放祟,揭示了互聯(lián)時代的未來趨勢鳍怨,顛覆了普通人對游戲的認(rèn)知。 核心內(nèi)容這本書分三個部分跪妥,第一部...
    林安福閱讀 323評論 2 1
  • 哲學(xué)特別是包含道德與倫理的社會哲學(xué),其偉大之處在于把模糊的東西做成清晰的學(xué)說,它定義錯誤與正確,甚至罪惡與美好,這...
    粲月閱讀 173評論 0 0
  • 什么是url?? url是uniform resource location的縮寫鞋喇,具體意思為統(tǒng)一資源定位符,是互...
    losspm閱讀 227評論 0 0