使用doctest代码测试和Sphinx自动生成文档
python代码测试并自动生成文档
Tips:两大工具:doctest--单元测试、Sphinx--自动生成文档
1.doctest
doctest是python自带的一个模块。doctest有两种使用方式:一种是嵌入到python源码中,另外一种是放到一个独立文件。
1.1 嵌入源码
新建test.py
import doctest
'''
'>>>' 开头的行就是doctest测试用例。
不带 '>>>' 的行就是测试用例的输出。
如果实际运行的结果与期望的结果不一致,就标记为测试失败。
'''
def multiply(a, b):
"""
>>> multiply(3, 2)
6
>>> multiply('a', 3)
'aaa'
"""
return a * b
if __name__=='__main__':
doctest.testmod(verbose=True)
# verbose=True即强制使用详细模式:不管执行如何均输出详细信息,
# 若verbose=False则只输出测试结果不符合的信息
执行结果为:
Trying:
multiply(3, 2)
Expecting:
6
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.
如果__main__函数有其他用途,不方便调用doctest.testmod()方法,那么可以用另外一种执行测试的方法,在cmd中输入:python -m doctest test.py或者python -m doctest -v test.py。
其中-m表示引用一个模块,-v等价于verbose=True。运行输出与上面基本一样。
1.2 独立使用
新建一个save.txt文件来保存测试用例。
将test.py中的doctest内容拷贝出来放到save.txt文件里,注意save.txt要放在与test.py相同的目录中
下面是save.txt的内容:
>>> from test import multiply
>>> multiply(3, 2)
6
>>> multiply('a', 3)
'aaa'
打开cmd,切换到py文件路径,输入python -m doctest save.txt或者python -m doctest -v save.txt
可以得到和1.1节中相同的输出结果。
Tips:个人建议使用1.2节中的方法。
2.Sphinx
首先,python不自带Sphinx,需要用pip install sphinx安装(anaconda已经预装)
新建项目sphinx_demo,sphinx_demo/src放项目代码test.py,sphinx_demo/doc放sphinx最终自动生成的文档
2.1 reStructuredText风格
reStructuredText风格是pycharm默认注释风格
# -*- coding: utf-8 -*-
class divide_class:
'''reStructuredText风格:用冒号分隔,PyCharm默认风格
:arg dividend: 被除数
:type dividend: int
'''
def __init__(self, dividend, name='ReStructuredTextStyle'):
self.dividend = dividend
self.name = name
def divide(self, divisor):
'''除法
reStructuredText风格的函数,类型主要有param、type、return、rtype、exception
:param divisor: 除数
:type divisor: int
:returns: 除法结果
:rtype: :obj:`int` or :obj:`str`
:exception TypeError: the type of divisor isn't int
>>> reStructredText = ReStructuredTextStyle(dividend=10)
>>> reStructredText.divide(5)
2
'''
try:
if isinstance(divisor, int):
return self.dividend / divisor
else:
raise TypeError("Error!The type of divisor isn't int!")
except TypeError as e:
return e
2.2 Google
Google注释风格是影响力最大的一个,而且十分简洁。
# -*- coding: utf-8 -*-
class divide_class:
'''Google注释风格:用 ``缩进`` 分隔,适用于倾向水平,短而简单的文档
Attributes:
dividend (int or float): 被除数
'''
def __init__(self, dividend):
self.dividend = dividend
def divide(self, divisor):
'''除法
Google注释风格的函数,类型主要有Args、Returns、Raises、Examples
Args:
divisor (int):除数
Returns:
除法结果
Raises:
ZeroDivisionError: division by zero
Examples:
>>> google = GoogleStyle(divisor=10)
>>> google.divide(5)
2
References:
除法_百度百科 https://baike.baidu.com/item/%E9%99%A4%E6%B3%95/6280598
'''
try:
return self.dividend / divisor
except ZeroDivisionError as e:
return e
在命令行cd到sphinx_demo/doc,执行命令sphinx-quickstart,设置结构分离、项目名、作者名、版本号、语言
> Separate source and build directories (y/n) [n]: y
> Project name: sphinx_demo
> Author name(s): XerCis
> Project release []: 1.0
> Project language [en]: zh_CN 或 回车默认英文
在doc/source/conf.py指定项目代码路径sphinx_demo/src,并修改扩展extensions
import os
import sys
sys.path.insert(0, os.path.abspath('../../src'))
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.napoleon',
'sphinx.ext.doctest',
'sphinx.ext.intersphinx',
'sphinx.ext.todo',
'sphinx.ext.coverage',
'sphinx.ext.mathjax',
]
执行生成API文档命令sphinx-apidoc -o source ../src/,再用make html(linux)或者.\make html(windows)生成网页文件,打开doc/build/html/index.html即可看到文档
使用doctest代码测试和Sphinx自动生成文档的更多相关文章
- eoLinker 新功能发布,增加了识别代码注释自动生成文档功能
产品地址:https://www.eolinker.com开源代码:https://www.eolinker.com/#/os/download在线生成代码注释工具:http://tool.eolin ...
- 【Sphinx】 为Python自动生成文档
sphinx 前言 Sphinx是一个可以用于Python的自动文档生成工具,可以自动的把docstring转换为文档,并支持多种输出格式包括html,latex,pdf等 开始 建一个存放文档的do ...
- 使用 Swagger 自动生成 ASP.NET Core Web API 的文档、在线帮助测试文档(ASP.NET Core Web API 自动生成文档)
对于开发人员来说,构建一个消费应用程序时去了解各种各样的 API 是一个巨大的挑战.在你的 Web API 项目中使用 Swagger 的 .NET Core 封装 Swashbuckle 可以帮助你 ...
- 使用swagger在netcorewebapi项目中自动生成文档
一.背景 随着前后端分离模式大行其道,我们需要将后端接口撰写成文档提供给前端,前端可以查看我们的接口,并测试,提高我们的开发效率,减少无效的沟通.在此情况下,通过代码自动生成文档,这种需求应运而生,s ...
- MVC WEB api 自动生成文档
最近在一直在用webapi做接口给移动端用.但是让我纠结的时候每次新加接口或者改动接口的时候,就需要重新修改文档这让我很是苦恼.无意中发现.webapi居然有自动生成文档的功能....真是看见了救星啊 ...
- SpringBoot 集成Swagger2自动生成文档和导出成静态文件
目录 1. 简介 2. 集成Swagger2 2.1 导入Swagger库 2.2 配置Swagger基本信息 2.3 使用Swagger注解 2.4 文档效果图 3. 常用注解介绍 4. Swagg ...
- 使用Sphinx为你的python模块自动生成文档
Sphinx是一个可以用于Python的自动文档生成工具,可以自动的把docstring转换为文档,并支持多种输出格式包括html,latex,pdf等. 安装 创建一个sphinx项目 下面的命令会 ...
- linux c/c++ 代码使用 doxygen 自动生成文档
www.doxygen.org 的使用非常方便,下面分成2步介绍一下 1. 注释风格,需要在c/c++代码中按照下面的风格添加注释,基本上还是很顺手的 C++的注释风格 主要使用下面这种样式:即在注释 ...
- 用doxygen自动生成文档
1. 添加符合doxygen解析规则的注释 (比如函数说明,函数参数/返回值说明) 用qt-creator可以在函数上方一行键入“/**”,然后直接回车,就可以自动生成默认的格式. 2. 安装doxy ...
随机推荐
- Linux安装JDK并配置环境变量
Linux - 安装jdk并配置环境变量 1. 前往JDK官网, 地址:https://www.oracle.com/java/technologies/downloads/ 复制下载链接 2. ...
- linux 3.10 一个扇区异常可能引发的hung
最近遇到一例3.10内核的crash: [ 4109.682163] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" d ...
- 在vue项目中使用UEditor--plus
1:UEditor-plus富文本编辑器如何在vue项目中使用 备注:UEditor是由百度web前端研发部开发的所见即所得的开源富文本编辑器,由于该项目不在维护:程序员自发对其进行了维护,详见 ht ...
- JWT漏洞学习
JWT漏洞学习 什么是JWT? JWT是JSON Web Token的缩写,它是一串带有声明信息的字符串,由服务端使用加密算法对信息签名,以保证其完整性和不可伪造性.Token里可以包含所有必要的信息 ...
- 【JDBC】学习路径2-编写第一个JDBC程序
第一章:导入jar包 在未安装MySQL数据库的请务必安装,安装教程:[MySQL]从入门到掌握2-下载安装 connector/J下载地址:https://dev.mysql.com/downloa ...
- sql报错收集
踩坑记录: 当出现如下错误 Not enough parameters for the SQL statement 多半是因为插入时填写的字段名有误 json.decoder.JSONDecodeEr ...
- ubuntu安装BricsCAD
目录 目录 下载软件包 安装deb软件包 sudo dpkg -i *.deb 将Crack/bricsys.lic中hostid= <YOURHOSTID>替代本机MAC地址(中间不要冒 ...
- Zookeeper及基于Zookeeper的分布式锁总结
1. Zookeeper ZooKeeper 内部存储的数据结构 / +-- node1 +-- node2 | +-- sub_node21 -> "I am sub_node21& ...
- TFT-eSPI入门使用教程
一.准备资料 开发板:ESP32-S3 屏驱动是:ST7789_DRIVER 开发环境:VS Code + PlatformIO 注意:以上是我使用的环境,不一定需要和是使用的东西一样,这里主要是学习 ...
- 0.web理解
web前后端 网站的前端:通过用户肉眼看到的网站的布局内容,对网站的操作的功能,可以让用户可以直接接触与操作的部分. 用户通过访问前端的功能,前端分为 静态功能+动态功能 静态功能:静态功能则不会和后 ...