日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python 几种常用测试框架

發(fā)布時間:2024/7/19 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 几种常用测试框架 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

測試的常用規(guī)則

  • 一個測試單元必須關(guān)注一個很小的功能函數(shù),證明它是正確的;
  • 每個測試單元必須是完全獨立的,必須能單獨運行。這樣意味著每一個測試方法必須重新加載數(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()這些名字,這些名字描述更加清楚;
  • 測試代碼必須具有可讀性;
  • 單元測試對新進的開發(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 + 1 class MyTest(unittest.TestCase): def test(self): self.assertEqual(fun(3), 4)

    執(zhí)行后成功。

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

    2.2 Doctest

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

    舉個例子:

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

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

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

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

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

    2.3 py.test

    py.test是unittest的替代工具。

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

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

    首先,安裝py.test

    pip install pytest

    第二步,編寫測試代碼

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

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

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

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

    2.4 Nose

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

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

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

    2.5 tox

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

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

    2.6? Unittest2

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

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

    首先,安裝

    pip install unittest2

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

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

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

    mock的精髓在于,你可以使用模擬的對象來替代你的系統(tǒng)的一部分,然后驗證后續(xù)的執(zhí)行是否正確。 mock的詳細(xì)文檔:http://www.voidspace.org.uk/python/mock/

    轉(zhuǎn)載于:https://www.cnblogs.com/ceshi2016/p/9110695.html

    總結(jié)

    以上是生活随笔為你收集整理的python 几种常用测试框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。