精品一区二区三区影院在线午夜_天天躁日日躁狠狠躁AV麻豆_国产午夜福利短视频_中文字幕乱偷无码AV先锋蜜桃_久久精品一二区东京热_国产成人亚洲日韩欧美久久久,国产成人精品久久一区二区三区

python之doctest的用法

doctest是python自帶的一個模塊,你可以把它叫做“文檔測試”(doctest)模塊。

doctest的使用有兩種方式:一個是嵌入到python源中。另一個是放到一個獨立文件。

doctest的概念模型:

Module doctest - 一個在docstrings中運行示例的框架。

在最簡單的使用中,結束每個要測試的模塊M:

def _test():

導入doctest

doctest.testmod()

如果__name__ ==“__main__”:

_測試()

然后將該模塊作為腳本運行將導致在

docstrings得到執行和驗證:

python M.py

這將不會顯示任何東西,除非一個例子失敗,在這種情況下

失敗的例子和失敗的原因被打印到標準輸出

(為什么不stderr?因為stderr是一個蹩腳的黑客<0.2.wink>),以及最后的

輸出行是“測試失敗”。

改為使用-v開關運行它:

python M.py -v

并將所有嘗試的示例的詳細報告一起打印到stdout

并在最后提供各種摘要。

您可以通過將“verbose = True”傳遞給testmod來強制詳細模式,或禁止

它通過傳遞“verbose = False”。在任何一種情況下,sys.argv都不是

由testmod檢查。

有多種其他方式可以運行doctests,包括集成

使用unittest框架,并支持運行非Python文本

包含doctests的文件。還有很多方法可以覆蓋零件

doctest的默認行為

doctest潛入源碼中:

例子:

用doctext測試一個Dict類:

#mydit.py

class Dict(dict):

  ,,,

  simple dict but also support access as x.y style.

  >>> d1 = Dict()

  >>> d1['x'] = 100

  >>> d1.x

  100

  >>> d1.y=200

  >>> d1['y']

  200

  >>> d2 = Dict(a=1,b=2,c='3')

  >>> d2.c

  '3'

  >>> d2['empty']

  Traceback (most recent call last):

    ...

  KeyError:'empty'

  >>> d2.empty

  Traceback(most recent call last):

    ...

  AttributeError: 'Dict' object has no attribute 'empty'

  '''

  def __init__(self,**kw):

    super(Dict,self).__init__(**kw)

  def _getattr_(self,key):

    try:

      return self[key]

    except KeyError:

      raise AttributeError(r"'Dict' object has no attribute '%s'"%key)

  def _setattr_(self,key,value):

    self[key] = value

if __name__=='_main_':

  import doctest

  docest.testmod()

doctest嚴格按照python交互式命令行的輸入和輸出來判斷測試結果是否正確。只有測試異常的時候,可以用...表示中間的一大段煩人的輸出。

運行python mydict.py:

$ python mydict.py

什么輸出也沒有。這說明我們編寫的doctest運行都是正確的。

獨立文件模式

如果不想或不能把測試用例寫進源代碼里,則還可以使用一個獨立的文本文件來保存測試用例。

將doctest從測試用例:

def multiply(a, b):
    """
    >>> multiply(4, 3)
    12
    >>> multiply('a', 3)
    'aaa'
    """
    return a * b
if __name__=='__main__':
    import doctest
    doctest.testmod(verbose=True)


放到test_unnecessary_math.txt文件里。


1 這個例子展示如何將doctest用例放到一個獨立的文件中。


2 '>>>'開頭的行就是doctest測試用例。


3 不帶'>>>'的行就是測試用例的輸出。


4 如果實際運行的結果與期望的不一致,就標記為測試失敗。


>>> from unnecessary_math import mutiply


>>> mutiply(3,4)


12


>>>mutiply('a',3)


'aaa'


注意: from 那一行也要以>>>開頭


在系統的shell中執行:


python -m doctest -v test_unncessary_math.txt

  

      

五大连池市| 广丰县| 理塘县| 河曲县| 张掖市| 洛川县| 康平县| 大石桥市| 收藏| 门源| 南投县| 马公市| 延津县| 即墨市| 西吉县| 安宁市| 翁牛特旗| 乌鲁木齐市| 科技| SHOW| 阜康市| 离岛区| 日土县| 太谷县| 磐安县| 溧水县| 德安县| 屏东县| 西峡县| 运城市| 临江市| 佛山市| 叙永县| 南汇区| 嵊州市| 锡林浩特市| 乐业县| 长宁区| 德化县| 衡山县| 始兴县|