软件开发固然重要,软件测试也必不可少。
一. Python 文档测试
1. pydoc生成文档
python 的 pydoc 模块可以非常方便地查看、生成 HTML 帮助文档。只要在函数、类、方法定义后面加
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
@File : 01_create_pydoc.py
@Time : 2019/8/16 11:36
@Author : Crisimple
@Github : https://crisimple.github.io/
@Contact : Crisimple@foxmail.com
@License : (C)Copyright 2017-2019, Micro-Circle
@Desc : None
"""
NMAE = 'PyDOC'
class CreatePyDOC(object):
name = 'pydoc'
"""
定义一个CreatePyDOC,该类包括两个变量:name、language
"""
def __int__(self, name, language):
"""
name --- 初始化文档的名称
language --- 初始化文档的编写语言
:param name:
:param language:
:return:
"""
self.name = name
self.age = language
def print_info(self, language):
"""
定义一个print_info方法
language代表使用的语言
:param language:
:return:
"""
print("%s doc 是用 %s 编写的" % (self.name, language))
def create_doc(name, language, money):
"""
定义一个打印创建doc信息的函数
name --- 档的称
language --- 文档语言
money --- 售价
:param name:
:param language:
:param money:
:return:
"""
print("doc的名字是 %s, 它的语言是 %s, 售价 %d"% (name, language, money))
1.1 pydoc 在控制台中查看文档
(1) 模块的文档说明:就是*.py 文件顶部的注释信息,这部分信息会被提取成模块的文档说明。
(2) CLASSES 部分:这部分会列出该模块所包含的全部类。
(3) FUNCTIONS 部分:这部分会列出该模块所包含的全部函数。
(4) DATA 部分:这部分会列出该模块所包含的全部成员变量。
(5) FILE 部分:这部分会显示该模块对应的源文件。
# m 是 python 命令的一个选项,表示运行指定模块
python -m pydoc 01_create_pydoc
# *********执行结果*************
$ python -m pydoc 01_create_pydoc
Help on module 01_create_pydoc:
NAME
01_create_pydoc
DESCRIPTION
@File : 01_create_pydoc.py
@Time : 2019/8/16 11:36
@Author : Crisimple
@Github : https://crisimple.github.io/
@Contact : Crisimple@foxmail.com
@License : (C)Copyright 2017-2019, Micro-Circle
@Desc : None
CLASSES
builtins.object
CreatePyDOC
class CreatePyDOC(builtins.object)
| Methods defined here:
|
| __int__(self, name, language)
| name --- 初始化文档的名称
| language --- 初始化文档的编写语言
| :param name:
| :param language:
| :return:
|
| print_info(self, language)
| 定义一个print_info方法
| language代表使用的语言
| :param language:
| :return:
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| name = 'pydoc'
FUNCTIONS
create_doc(name, language, money)
定义一个打印创建doc信息的函数
name --- 档的称
language --- 文档语言
money --- 售价
:param name:
:param language:
:param money:
:return:
DATA
NAME = 'PyDOC'
FILE
d:\myspace\python\unittest\doc\01_create_pydoc.py
1.2 pydoc 生成 HTML 文档
# -w 选项,该选项代表 write,表明输出 HTML 文档
python -m pydoc -w 01_create_pydoc
1.3 启动本地服务查看文档
第一部分显示 Python 内置的核心模块。
第二部分显示 当前目录下的所有模块。
第三部分显示 目录下的所有模块,此时在该目录下并未包含任何模块。第三部分用于显示 PYTHONPATH 环境变量所指定路径下的模块
python -m pydoc -p 1234
# 输出信息
python -m pydoc -p 1234
Server ready at http://localhost:1234/
Server commands: [b]rowser, [q]uit
server> b --- 启动浏览器,当然也可以自己在浏览器输入地址
server> q --- 退出本地服务
Server stopped
1.4 pydoc 查找模块
-k 后跟被搜索模块的部分内容,即可以进行模糊搜索
python -m pydoc -k create
2. doctest 文档测试
文档测试,即通过 doctest 模块运行 Python 源文件的说明文档中的测试用例,从而生成测试报告。
文档测试工具可以提取文档说明中的测试用例,">>>" 后面就表示的是测试用例,紧接着的一行则代表测试用例的输出结果(即预期结果)。文档测试工具会判断测试用例与预期结果是否一致,不一致会输出错误信息。
【GitHub代码commits id:cda157d】
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
@File : 02_doctest.py
@Time : 2019/8/17 15:48
@Author : Crisimple
@Github : https://crisimple.github.io/
@Contact : Crisimple@foxmail.com
@License : (C)Copyright 2017-2019, Micro-Circle
@Desc : None
"""
import doctest
class User:
"""
定义一个代表用户的类,该类包含两个属性:
name - 用户的名字
age - 用户的年龄
>>> u = User('abc', 9)
>>> u.name
'ABC'
>>> u.age
9
>>> u.say()
'abc 说,我今年 10 岁了。'
"""
def __init__