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

首頁 > 編程 > Python > 正文

python 幾種常用測試框架

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

二、常見的測試框架

2.1 Unittest

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

通過繼承unittest.TestCase來創(chuàng)建一個測試用例。

具體請參考 文檔 。

舉個例:

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 模塊會搜索那些看起來像交互式會話的 Python 代碼片段,然后嘗試執(zhí)行并驗(yàn)證結(jié)果.即使從沒接觸過 doctest,我們也可以從這個名字中窺到一絲端倪?!八雌饋砭拖翊a里的文檔字符串(docstring)一樣” 如果你這么想的話,就已經(jīng)對了一半了。

舉個例子:

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í)行該代碼后,會執(zhí)行文檔內(nèi)>>> 后面的測試代碼,并與下一行的結(jié)果進(jìn)行比對。執(zhí)行的結(jié)果如下:

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

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

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

2.3 py.test

py.test是unittest的替代工具。

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

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

首先,安裝py.test

pip install pytest

第二步,編寫測試代碼

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

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

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

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

2.4 Nose

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

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

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

2.5 tox

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

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

2.6  Unittest2

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

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

首先,安裝

pip install unittest2

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

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

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

mock的精髓在于,你可以使用模擬的對象來替代你的系統(tǒng)的一部分,然后驗(yàn)證后續(xù)的執(zhí)行是否正確。
mock的詳細(xì)文檔:http://www.voidspace.org.uk/python/mock/
下一篇我們重點(diǎn)講講nose的使用方法。
上一篇:Python簡介

下一篇:python 測試框架 pytest

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 中文字幕国 | 国产一级做a爱片在线看免 2019天天干夜夜操 | 久久国产精品91 | 日韩视频精品一区 | 久久久国产精品成人免费 | 深夜视频在线 | 欧美日韩大片在线观看 | 久草成人在线 | 毛片在线免费观看网址 | 黄色片免费看网站 | 国产欧美日韩在线不卡第一页 | 久久免费观看一级毛片 | 99精品视频在线观看免费播放 | 欧美精品一区二区三区在线 | 国产美女精品视频 | 久久精品一区二区三区四区五区 | 国产精品久久久免费 | 久久国产夫妻视频 | 中文在线日韩 | 九九热视频在线免费观看 | 天天操很很操 | 最新欧美精品一区二区三区 | 视频一区二区久久 | 国产精品久久久久无码av | 精品国产一区二区三区成人影院 | 欧美亚成人 | 国产免费小视频在线观看 | 久久国产一级 | 青热久思思 | 国产呻吟| 国产午夜三级一区二区三桃花影视 | 欧美日韩在线免费观看 | 欧美a视频| 91九色蝌蚪国产 | 久久一本日日摸夜夜添 | 精品国产91久久久久久 | av电影免费观看 | 亚洲一区二区国产 | 一级片九九| 国产精品视频二区不卡 | 亚洲九草 |