免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
pytest文檔19-doctest測試框架

前言

doctest從字面意思上看,那就是文檔測試。doctest是python里面自帶的一個模塊,它實際上是單元測試的一種。
官方解釋:doctest 模塊會搜索那些看起來像交互式會話的 Python 代碼片段,然后嘗試執(zhí)行并驗證結果

doctest測試用例可以放在兩個地方

  • 函數(shù)或者方法下的注釋里面

  • 模塊的開頭

案例

先看第一個案例,將需要測試的片段,標準格式,需要運行的代碼前面加>>> ,相當于進入cmd這種交互環(huán)境執(zhí)行,期望的結果前面不需要加>>>

>>> multiply(4, 3)    12 >>> multiply('a', 3)    'aaa'

放到multiply函數(shù)的注釋里

def multiply(a, b):    """    fuction: 兩個數(shù)相乘    >>> multiply(4, 3)    12    >>> multiply('a', 3)    'aaa'    """    return a * b if __name__ == '__main__':    import doctest    doctest.testmod(verbose=True)

運行結果

Trying:    multiply(4, 3) Expecting:    12 ok Trying:    multiply('a', 3) Expecting:    'aaa' ok 1 items had no tests:    __main__ 1 items passed all tests:   2 tests in __main__.multiply 2 tests in 2 items. 2 passed and 0 failed. Test passed.

從運行的結果可以看出,雖然函數(shù)下方的注釋里面有其它內容“fuction: 兩個數(shù)相乘”,但不會去執(zhí)行,只識別“>>>”這種符號。2個測試用例都是通過的,實際的結果與期望的結果一致。

失敗案例

doctest的內容放到.py模塊的開頭也是可以識別到的

# 保存為xxx.py ''' fuction: 兩個數(shù)相乘 >>> multiply(4, 8) 12 >>> multiply('a', 5) 'aaa' ''' def multiply(a, b):    """    fuction: 兩個數(shù)相乘    """    return a * b if __name__ == '__main__':    import doctest    doctest.testmod(verbose=True)

運行結果2個都失敗

********************************************************************** 1 items had failures:   2 of   2 in __main__ 2 tests in 2 items. 0 passed and 2 failed. ***Test Failed*** 2 failures.

verbose參數(shù),設置為True則在執(zhí)行測試的時候會輸出詳細信息

cmd執(zhí)行

以上案例是在編輯器直接運行的,如果在cmd里面,也可以用指令去執(zhí)行

$ python -m doctest -v xxx.py

  • m 參數(shù)指定運行方式doctest

  • -v參數(shù)是verbose,帶上-v參數(shù)相當于verbose=True

pytest運行

pytest框架是可以兼容doctest用例,執(zhí)行的時候加個參數(shù) —doctest-modules ,這樣它就能自動搜索到doctest的用例

$ pytest -v —doctest-modules  xxx.py

如下是函數(shù)下的文檔

fuction: 兩個數(shù)相乘 >>> multiply(4, 3) 12 >>> multiply('a', 5) 'aaa'

運行結果

D:\test1122\a>pytest -v --doctest-modules  xxx.py ============================= test session starts ============================= platform win32 -- Python 3.6.0, pytest-3.6.3, py-1.5.4, pluggy-0.6.0 -- d:\softpython3.6\python.exe cachedir: .pytest_cache metadata: {'Python': '3.6.0', 'Platform': 'Windows-7-6.1.7601-SP1', 'Packages': {'pytest': '3.6.3', 'py': '1.5.4', 'pluggy': '0.6.0'}, 'Plugins': {'metadata': ' 1.7.0', 'html': '1.19.0', 'allure-adaptor': '1.7.10'}, 'JAVA_HOME': 'D:\\soft\\j dk18\\jdk18v'} rootdir: D:\test1122\a, inifile: plugins: metadata-1.7.0, html-1.19.0, allure-adaptor-1.7.10 collected 1 item xxx.py::xxx.multiply FAILED                                              [100%] ================================== FAILURES =================================== ___________________________ [doctest] xxx.multiply ____________________________ 004 005     fuction: 兩個數(shù)相乘 006     >>> multiply(4, 3) 007     12 008     >>> multiply('a', 5) Expected:    'aaa' Got:    'aaaaa' D:\test1122\a\xxx.py:8: DocTestFailure ========================== 1 failed in 0.16 seconds ===========================

結果可以看出,文檔里面的每一行都被執(zhí)行了,當遇到測試不通過的用例時,就不會繼續(xù)往下執(zhí)行了

doctest獨立文件

doctest內容也可以和代碼抽離開,單獨用一個.txt文件保存

在當前xxx.py同一目錄新建一個xxx.txt文件,寫入測試的文檔,要先導入該功能,導入代碼前面也要加>>>

>>> from xxx import multiply >>> multiply(4, 3) 12 >>> multiply('a', 3) 'aaa'

cmd執(zhí)行“python -m doctest -v  xxx.txt測試結果

>python -m doctest -v  xxx.txt Trying:    from xxx import multiply Expecting nothing ok Trying:    multiply(4, 3) Expecting:    12 ok Trying:    multiply('a', 3) Expecting:    'aaa' ok 1 items passed all tests:   3 tests in xxx.txt 3 tests in 1 items. 3 passed and 0 failed. Test passed.

** 作者:上海-悠悠 QQ交流群:588402570**

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
pytest封神之路第二步 132個命令行參數(shù)用法
python – 避免打印點
pytest入門 -2-分組執(zhí)行
python .py文件在集成環(huán)境怎么打包成為EXE文件?
python 幾種常用測試框架及詳解教程
python中if__name__=='__main__':解析
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服