python之基础篇(十)――执行环境与doctest模块

2017-01-10 19:23:59来源:作者:人点击

防伪码:忘情公子著

解释器环境与选项
python解释器启动:
python [options] [-c cmd | filename | - ] [args]
选项
描述
-3
启用将从python3中删除或更改某些功能的警告
-B
阻止在导入时创建.pyc或.pyo文件
-E
忽略环境变量
-h
打印所有可用命令行选项的列表
-i
在程序执行后进入交互模式
-m module
以脚本的形式运行库模块module
-O
优化模式
-OO
优化模式,在创建.pyo文件时删除文档字符串
-Q arg
指定python2中除法运算符的行为,值为-Qold(默认值)、-Qnew、-Qwarn或-Qwarnall之一
-s
阻止将用户站点目录添加到sys.path
-S
阻止包含site初始化模块
-t
报告关于不一致的标签使用警告
-tt
由于不一致的标签使用而导致TabError异常
-u
未缓冲的二进制stdout和stdin
-U
Unicode字面量。所有字符串字面量都以Unicode形式处理(仅在python2中使用)
-v
详细模式。跟踪导入语句
-V
打印版本号并退出
-x
跳过源程序的第一行
-c cmd
以字符串形式执行cmd
python解释器环境变量:
环境变量
描述
PYTHONPATH
以冒号分隔的模块搜索路径
PYTHONSTARTUP
在以交互方式启动时执行的文件
PYTHONHOME
python安装的位置
PYTHONINSPECT
相当于-i选项
PYTHONUNBUFFERED
相当于-u选项
PYTHONIOENCODING
针对stdin、stdout和stderr的编码和错误处理。这是一个encoding[:errors]形式的字符串,如utf-8或utf-8:ignore
PYTHONDONIWRITEBYTECODE
相当于-B选项
PYTHONOPTIMIZE
相当于-O选项
PYTHONNOUSERSITE
相当于-s选项
PYTHONVERBOSE
相当于-v选项
PYTHONUSERBASE
每个用户站点包的根目录
PYTHONCASEOK
指示为导入所使用的模块名称使用不区分大小写的匹配方式
python代码的测试、调试与探查
基于文档字符串来进行测试。
如果函数、类或模块的第一行是一个字符串,这个字符串就称为文档字符串(docstrings)。
内置函数help()或对象的默认方法__doc__可以显示这些文档字符串。
In [1]: def Sum(num1,num2):...:  '''The sumary of num1 and num2....:  >>> Sum(2,5)...:  7...:  >>> Sum(12,77)...:  89...:  '''...:  return num1 + num2...:In [2]: help(Sum)In [3]: Sum.__doc__Out[3]: 'The sumary of num1 and num2./n >>> Sum(2,5)/n 7/n >>> Sum(12,77)/n 89/n '
doctest模块:
doctest模块允许在文档字符串内嵌入注释以显示各种语句的期望行为,尤其是函数和方法的结果
此处的文档字符串看起来如同一个交互式shell会话;
可用于测试文档是否与程序主体保持同步,或基于文档对程序本身做测试
自定义模块mymod:
[root@localhost test]# pwd/root/test[root@localhost test]# cat mymod.py#!/usr/bin/pythondef add(num1,num2): ''' >>> add(12,43) 55 ''' return num1 + num2
在交互式模式下使用doctest模块进行测试:
In [4]: import sysIn [5]: sys.path.append('/root/test') #将/root/test加入模块搜索路径In [6]: import mymodIn [7]: import doctestIn [8]: doctest.testmod(mymod)Out[8]: TestResults(failed=0, attempted=1)In [9]: doctest.testmod(mymod,verbose=True)Trying: add(12,43)Expecting: 55ok1 items had no tests: mymod1 items passed all tests:1 tests in mymod.add1 tests in 2 items.1 passed and 0 failed.Test passed.Out[9]: TestResults(failed=0, attempted=1)
如果文档字符串中的结果与预期结果不一致,测试会显示出错的结果信息。
创建可自测试的模块:
在模块的尾部添加如下代码即可
[root@localhost test]# cat mymod.py#!/usr/bin/pythondef add(num1,num2): ''' >>> add(12,43) 55 ''' return num1 + num2if __name__ == '__main__': import doctest print doctest.testmod(verbose=True)[root@localhost test]# python mymod.pyTrying: add(12,43)Expecting: 55ok1 items had no tests: __main__1 items passed all tests:1 tests in __main__.add1 tests in 2 items.1 passed and 0 failed.Test passed.TestResults(failed=0, attempted=1)
此类模块在python解释器中直接运行时即能进行自我测试。
本文出自 “忘情居” 博客,请务必保留此出处http://itchentao.blog.51cto.com/5168625/1890283

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台