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

首頁 > 編程 > Python > 正文

python 測試框架 pytest

2019-11-11 05:40:41
字體:
來源:轉載
供稿:網友

pytest 有時也被稱為 py.test,是因為它使用的執行命令是 $ py.test。本文中我們使用 pytest 指代這個測試框架,py.test 特指運行命令。

    較于 nose


這里沒有使用像前三篇一樣(簡介-舉例-discovery-環境)式的分段展開,是因為 pytest 與 nose 的基本用法極其相似。因此只做一個比較就好了。他倆的區別僅在于

調用測試的命令不同,pytest 用的是 $ py.test創建測試環境(setup/teardown)的 api 不同   

下面使用一個例子說明 pytest 的 setup/teardown 使用方式。

some_test.py:

import [email protected](scope='function')def setup_function(request):    def teardown_function():        PRint("teardown_function called.")    request.addfinalizer(teardown_function)    print('setup_function called.')@pytest.fixture(scope='module')def setup_module(request):    def teardown_module():        print("teardown_module called.")    request.addfinalizer(teardown_module)    print('setup_module called.')def test_1(setup_function):    print('Test_1 called.')def test_2(setup_module):    print('Test_2 called.')def test_3(setup_module):    print('Test_3 called.')

pytest 創建測試環境(fixture)的方式如上例所示,通過顯式指定 scope='' 參數來選擇需要使用的 pytest.fixture 裝飾器。即一個 fixture 函數的類型從你定義它的時候就確定了,這與使用@nose.with_setup() 十分不同。對于 scope='function' 的 fixture 函數,它就是會在測試用例的前后分別調用 setup/teardown。測試用例的參數如def test_1(setup_function) 只負責引用具體的對象,它并不關心對方的作用域是函數級的還是模塊級的。

有效的 scope 參數限于:'function','module','class','session',默認為 function

運行上例:$ py.test some_test.py -s-s 用于顯示 print() 函數

============================= test session starts =============================platform win32 -- Python 3.3.2 -- py-1.4.20 -- pytest-2.5.2collected 3 itemstest.py setup_function called.Test_1 called..teardown_function called.setup_module called.Test_2 called..Test_3 called..teardown_module called.========================== 3 passed in 0.02 seconds ===========================

這里需要注意的地方是:setup_module 被調用的位置。

pytest 與 nose 二選一


    首先,單是從不需要使用特定類模板的角度上,nose 和 pytest 就較于 unittest 好出太多了。doctest 比較奇葩我們在這里不比。因此對于 “選一個自己喜歡的測試框架來用” 的問題,就變成了 nose 和 pytest 二選一的問題。

pythontesting.net 的作者非常喜歡 pytest,并表示

pytest 賽高,不服 solo

好吧,其實他說的是 “如果你挑不出 pytest 的毛病,就用這個吧”。

于是下面我們就來挑挑 pytest 的毛病:

它的 setup/teardown 語法與 unittest 的兼容性不如 nose 高,實現方式也不如 nose 直觀    第一條足矣   

畢竟 unittest 還是 Python 自帶的單元測試框架,肯定有很多怕麻煩的人在用,所以與其語法保持一定兼容性能避免很多麻煩。即使 pytest 在命令行中有彩色輸出讓我很喜歡,但這還是不如第一條重要。

實際上,PyPI 中 nose 的下載量也是 pytest 的 8 倍多。

所以假如再繼續寫某一個框架的詳解的話,大概我會選 nose 吧。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产成人高清在线观看 | 在线观看一二三 | 精品久久久久久久久久久久包黑料 | 久久久久电影网站 | 黄色免费小网站 | 久久亚洲美女视频 | 欧美18一19sex性护士农村 | 久久精品视频亚洲 | 国产一国产精品一级毛片 | 欧美日韩亚洲精品一区二区三区 | 亚洲影视中文字幕 | 91麻豆精品国产91久久久更新资源速度超快 | 日韩电影一区二区 | 毛片免费视频播放 | 亚洲一区在线视频观看 | 欧美在线观看视频网站 | caoporn国产一区二区 | 黑人操穴 | 免费观看黄色一级视频 | 国产成人在线一区二区 | 欧美成人久久 | 欧美a∨亚洲欧美亚洲 | 久久亚洲春色中文字幕久久 | 亚洲一区二区三区91 | 9797色| 在线看成人av | 中国美女一级黄色大片 | 深夜福利视频免费观看 | 老a影视网站在线观看免费 国产精品久久久久久久久久尿 | 欧美3p激情一区二区三区猛视频 | 亚洲国产成人久久成人52 | 国产电影精品久久 | 国产精品久久久久久久久久久久久久久久 | 成人福利视频导航 | 亚洲国产精品二区 | 一级免费黄色免费片 | 亚洲最新黄色网址 | 中文成人在线 | 久久老司机精品视频 | 91快色视频 | av在线高清观看 |