Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19911931
  • 博文数量: 679
  • 博客积分: 10495
  • 博客等级: 上将
  • 技术积分: 9308
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-18 10:51
文章分类

全部博文(679)

文章存档

2012年(5)

2011年(38)

2010年(86)

2009年(145)

2008年(170)

2007年(165)

2006年(89)

分类: Python/Ruby

2010-10-14 09:48:04

§11 测试、调试、评测和调

§11.1 文档字符串

#!/usr/bin/env python

# -*- coding: gbk -*-

import sys

 

#设定字符编码为GBK

reload(sys)

sys.setdefaultencoding('gbk')

 

def split(line, types=None, delimiter=None):

    """Splits a line of text and optionally performs type conversion.

    For example:

    >>> split('GOOG 100 490.50')

    ['GOOG', '100', '490.50']

    >>> split('GOOG 100 490.50',[str, int, float])

    ['GOOG', 100, 490.5]

    >>>

    By default, splitting is performed on whitespace, but a different

    delimiter can be selected with the delimiter keyword argument:

    >>> split('GOOG,100,490.50',delimiter=',')

    ['GOOG', '100', '490.50']

    >>>

    """

    fields = line.split(delimiter)

    if types:

        fields = [ ty(val) for ty,val in zip(types,fields) ]

    return fields

 

if __name__=='__main__':

    # test myself

    import doctest

doctest.testmod(verbose=True)

 

 

   作为模块的使用:

# testsplitter.py

import splitter

import doctest

nfail, ntests = doctest.testmod(splitter)

 

运行结果:

Trying:

    split('GOOG 100 490.50')

Expecting:

    ['GOOG', '100', '490.50']

ok

Trying:

    split('GOOG 100 490.50',[str, int, float])

Expecting:

    ['GOOG', 100, 490.5]

ok

Trying:

    split('GOOG,100,490.50',delimiter=',')

Expecting:

    ['GOOG', '100', '490.50']

ok

1 items had no tests:

    splitter

1 items passed all tests:

   3 tests in splitter.split

3 tests in 2 items.

3 passed and 0 failed.

Test passed.

 

如果没有设置verbose=True,仅仅在出错之后才会有输出。

Doctest 不适合做完整的测试,用户看到庞大的边界测试用例等会觉得厌烦。一般要使用unittest

更多参考:

阅读(16278) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~