Python单元测试工具doctest和unittest使用解析


Posted in Python onSeptember 02, 2019

Python标准库包含两个测试工具。

doctest:一个简单的模块,为检查文档而设计,但也适合用来编写单元测试。

unittest:一个通用的测试框架。

一、使用doctest进行单元测试

创建文件mymath.py,内容

def square(x):
  '''
  计算平方并返回结果(下面是单元测试的格式)
  >>> square(2)
  >>> square(3)
  '''
  return x * x
if __name__ == '__main__':
  import doctest,mymath
  doctest.testmod(mymath)

在Sublime Text 3中运行只是提示[Finished in 0.2s]。

在cmd命令下切换到mymath.py所在目录,运行python mymath.py -v后,有提示测试详细信息,测试通过。如下图:

Python单元测试工具doctest和unittest使用解析

把函数square里面的return x * x 改成 return x / x。

再次运行python mymath.py -v,提示测试不通过,如下图:

Python单元测试工具doctest和unittest使用解析

二、使用unittest进行单元测试

还是用mymath.py测试,内容:

def square(x):  
  return x * x

新建单元测试文件test_math.py,内容:

import unittest, mymath
class mathTestCase(unittest.TestCase):  
  def test_square(self):    
    self.assertEqual(mymath.square(2), 4)
    self.assertEqual(mymath.square(3), 9)
if __name__ == '__main__':
  unittest.main()

运行后,显示OK 测试通过。

.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

把函数square里面的return x * x 改成 return x / x。

再次运行,这次显示FAILED 测试不通过。

F
======================================================================
FAIL: test_square (__main__.mathTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
 File "D:\projects\python\test_math.py", line 6, in test_square
  self.assertEqual(mymath.square(2), 4)
AssertionError: 1.0 != 4

----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (failures=1)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python封装shell命令实例分析
May 05 Python
Python实现将目录中TXT合并成一个大TXT文件的方法
Jul 15 Python
浅谈python 读excel数值为浮点型的问题
Dec 25 Python
OpenCV 边缘检测
Jul 10 Python
python jenkins 打包构建代码的示例代码
Nov 29 Python
python Tensor和Array对比分析
Jan 08 Python
python 爬取马蜂窝景点翻页文字评论的实现
Jan 20 Python
使用Python 自动生成 Word 文档的教程
Feb 13 Python
pycharm 实现本地写代码,服务器运行的操作
Jun 08 Python
浅析python函数式编程
Sep 26 Python
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 Python
教你怎么用PyCharm为同一服务器配置多个python解释器
May 31 Python
Python操作SQLite数据库过程解析
Sep 02 #Python
Python实现生成密码字典的方法示例
Sep 02 #Python
python使用多线程编写tcp客户端程序
Sep 02 #Python
使用python实现离散时间傅里叶变换的方法
Sep 02 #Python
详解Python图像处理库Pillow常用使用方法
Sep 02 #Python
Django使用中间件解决前后端同源策略问题
Sep 02 #Python
python elasticsearch环境搭建详解
Sep 02 #Python
You might like
PHP4.04简明安装
2006/10/09 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
2014/03/17 PHP
PHP使用CURL模拟登录的方法
2015/07/08 PHP
给WordPress中的留言加上楼层号的PHP代码实例
2015/12/14 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
2015/12/18 PHP
PHP实现文件下载【实例分享】
2017/04/28 PHP
PHP程序员必须知道的两种日志实例分析
2020/05/14 PHP
Javascript的IE和Firefox兼容性汇编(zz)
2007/02/02 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
2012/12/23 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
JS判断元素是否在数组内的实现代码
2016/03/30 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
图文详解JavaScript的原型对象及原型链
2016/08/02 Javascript
php结合js实现多条件组合查询
2019/05/28 Javascript
使用vue-router切换页面时实现设置过渡动画
2019/10/31 Javascript
[05:08]顺网杯ISS-DOTA2赛歌 少女偶像Lunar青春演绎
2013/12/05 DOTA
Python列表推导式的使用方法
2013/11/21 Python
python 通过可变参数计算n个数的乘积方法
2019/06/13 Python
Python3enumrate和range对比及示例详解
2019/07/13 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
Python Selenium XPath根据文本内容查找元素的方法
2020/12/07 Python
英国浴室洗脸盆购物网站:Click Basin
2018/06/08 全球购物
.NET面试题:什么是反射
2016/09/30 面试题
擅自离岗检讨书
2014/02/11 职场文书
党员承诺书内容
2014/03/26 职场文书
室内设计专业毕业生求职信
2014/05/02 职场文书
2015年司法所工作总结
2015/04/27 职场文书
检讨书格式
2015/05/07 职场文书
Mongo服务重启异常问题的处理方法
2021/07/01 MongoDB
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS