麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > Python > 正文

python 幾種常用測(cè)試框架

2019-11-11 07:04:20
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
測(cè)試的常用規(guī)則一個(gè)測(cè)試單元必須關(guān)注一個(gè)很小的功能函數(shù),證明它是正確的;每個(gè)測(cè)試單元必須是完全獨(dú)立的,必須能單獨(dú)運(yùn)行。這樣意味著每一個(gè)測(cè)試方法必須重新加載數(shù)據(jù),執(zhí)行完畢后做一些清理工作。通常通過(guò)setUp()和setDown()方法處理;編寫(xiě)執(zhí)行快速的測(cè)試代碼。在某些情況下,測(cè)試需要加載復(fù)雜的數(shù)據(jù)結(jié)構(gòu),而且每次執(zhí)行的時(shí)候都要重新加載,這個(gè)時(shí)候測(cè)試執(zhí)行會(huì)很慢。因此,在這種情況下,可以將這種測(cè)試放置一個(gè)后臺(tái)的任務(wù)中。采用測(cè)試工具并且學(xué)著怎么使用它。在編寫(xiě)代碼前執(zhí)行完整的測(cè)試,而且在編寫(xiě)代碼后再重新執(zhí)行一次。這樣能保證你后來(lái)編寫(xiě)的代碼不會(huì)破壞任何事情;在提交代碼前執(zhí)行完整的測(cè)試;如果在開(kāi)發(fā)期間被打斷了工作,寫(xiě)一個(gè)打斷的單元測(cè)試,關(guān)于你下一步將要開(kāi)發(fā)的。當(dāng)你回來(lái)工作時(shí),你能知道上一步開(kāi)發(fā)到的指針;單元測(cè)試函數(shù)使用長(zhǎng)的而且具有描述性的名字。在正式執(zhí)行代碼中,可能使用square()或sqr()取名,但是在測(cè)試函數(shù)中,你必須取像test_square_of_number_2()、test_square_negativer_number()這些名字,這些名字描述更加清楚;測(cè)試代碼必須具有可讀性;單元測(cè)試對(duì)新進(jìn)的開(kāi)發(fā)人員來(lái)說(shuō)是工作指南。

二、常見(jiàn)的測(cè)試框架

2.1 Unittest

unittest是Python內(nèi)置的標(biāo)準(zhǔn)類庫(kù)。它的API跟java的JUnit、.net的NUnit,C++的CppUnit很相似。

通過(guò)繼承unittest.TestCase來(lái)創(chuàng)建一個(gè)測(cè)試用例。

具體請(qǐng)參考 文檔 。

舉個(gè)例:

import unittestdef fun(x):    return x + 1class MyTest(unittest.TestCase):    def test(self):        self.assertEqual(fun(3), 4)

執(zhí)行后成功。

但是,如果將期望的結(jié)果改成5,則執(zhí)行的結(jié)果如下圖所示:

2.2 Doctest

doctest 模塊會(huì)搜索那些看起來(lái)像交互式會(huì)話的 Python 代碼片段,然后嘗試執(zhí)行并驗(yàn)證結(jié)果.即使從沒(méi)接觸過(guò) doctest,我們也可以從這個(gè)名字中窺到一絲端倪。“它看起來(lái)就像代碼里的文檔字符串(docstring)一樣” 如果你這么想的話,就已經(jīng)對(duì)了一半了。

舉個(gè)例子:

def square(x):    """Squares x.    >>> square(2)    4    >>> square(-2)    4    >>> square(5)    25    """    return x * xif __name__ == '__main__':    import doctest    doctest.testmod()

當(dāng)執(zhí)行該代碼后,會(huì)執(zhí)行文檔內(nèi)>>> 后面的測(cè)試代碼,并與下一行的結(jié)果進(jìn)行比對(duì)。執(zhí)行的結(jié)果如下:

但是,如果我們把結(jié)果改一下,square(2)的結(jié)果改成5,測(cè)試代碼如下:

def square(x):    """Squares x.    >>> square(2)    5    >>> square(-2)    4    >>> square(5)    25    """    return x * xif __name__ == '__main__':    import doctest    doctest.testmod()

執(zhí)行的測(cè)試結(jié)果如下所示:

2.3 py.test

py.test是unittest的替代工具。

盡管它是一個(gè)功能豐富、靈活的測(cè)試框架,但是它的語(yǔ)法很簡(jiǎn)單。創(chuàng)建一個(gè)單元測(cè)試就像編寫(xiě)一個(gè)模塊一樣。相比unittest,實(shí)現(xiàn)相同的測(cè)試功能,py.test做的事情更少。

py.test詳細(xì) 文檔 。

首先,安裝py.test

pip install pytest

第二步,編寫(xiě)測(cè)試代碼

def func(x):    return x + 1def test_answer():    assert func(3) == 5

第三步,執(zhí)行測(cè)試代碼。

  找到pytest安裝路徑。用其所在的解析器(python.exe)執(zhí)行test.py ,執(zhí)行命令比如:

執(zhí)行的結(jié)果如下圖所示:

2.4 Nose

Nose是對(duì)unittest的擴(kuò)展,使得python的測(cè)試更加簡(jiǎn)單。nose自動(dòng)發(fā)現(xiàn)測(cè)試代碼并執(zhí)行,nose提供了大量的插件,比如測(cè)試輸出的xUnitcompatible,覆蓋報(bào)表等等。

nose的詳細(xì)文檔: https://nose.readthedocs.org/en/latest/

注意:nose本身是支持python3的,但是很多它的插件不支持。

2.5 tox

最大的特色,是自動(dòng)最測(cè)試環(huán)境的管理以及使用多個(gè)解析器配置進(jìn)行測(cè)試。

tox的詳細(xì)文檔: http://testrun.org/tox/latest/

2.6  Unittest2

是unitest的升級(jí)版。對(duì)API進(jìn)行了改善以及更好的診斷語(yǔ)法。

unittest2的詳細(xì)文檔: https://pypi.python.org/pypi/unittest2

首先,安裝

pip install unittest2

為了以后能在unittest與unittest2之間進(jìn)行切換,最好的代碼編寫(xiě)方式如下:

import unittest2 as unittestclass MyTest(unittest.TestCase):    ...

2.7 mock unittest.mock是用來(lái)測(cè)試python的庫(kù)。在python3.3版本以后,這個(gè)是一個(gè)標(biāo)準(zhǔn)庫(kù)。對(duì)老版本來(lái)說(shuō),使用pip install mock 進(jìn)行安裝。

mock的精髓在于,你可以使用模擬的對(duì)象來(lái)替代你的系統(tǒng)的一部分,然后驗(yàn)證后續(xù)的執(zhí)行是否正確。
mock的詳細(xì)文檔:http://www.voidspace.org.uk/python/mock/
下一篇我們重點(diǎn)講講nose的使用方法。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久精品79国产精品 | 国产1区在线观看 | av在线免费看网址 | www亚洲成人 | 国产日韩大片 | 国产一区国产二区在线观看 | 九色激情网 | 毛片视频网站在线观看 | 成人午夜激情视频 | 日韩中字在线 | 欧美中文字幕一区二区三区亚洲 | 亚洲性综合网 | 欧美精品一区二区性色 | 国产免费人做人爱午夜视频 | 看免费的毛片 | 717影院理论午夜伦八戒秦先生 | 成人国产精品久久 | 亚洲成人福利在线观看 | 久草视频在线资源 | 欧美日韩夜夜 | 成年人黄色片视频 | 91不雅视频 | 正在播放91精 | 伦一区二区三区中文字幕v亚洲 | 红杏亚洲影院一区二区三区 | 亚洲精品成人久久 | 久久国产精品小视频 | hdhdhdhd19日本人 | 免费午夜视频 | 国产69精品99久久久久久宅男 | 午夜视频免费在线观看 | 斗罗破苍穹在线观看免费完整观看 | 久久久精品精品 | 最污网站 | 激情宗合网 | 蜜桃网在线观看 | 成人毛片免费播放 | 在线中文日韩 | 国产一精品一av一免费爽爽 | 最新欧美精品一区二区三区 | 国产精品一区99 |