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脚本内运行linux命令的方法
Jul 02 Python
Python实现新浪博客备份的方法
Apr 27 Python
python生成词云的实现方法(推荐)
Jun 13 Python
Python简单获取二维数组行列数的方法示例
Dec 21 Python
python实现翻转棋游戏(othello)
Jul 29 Python
Python如何把Spark数据写入ElasticSearch
Apr 18 Python
python实现文法左递归的消除方法
May 22 Python
keras中的History对象用法
Jun 19 Python
keras 指定程序在某块卡上训练实例
Jun 22 Python
Python第三方包PrettyTable安装及用法解析
Jul 08 Python
Python 找出英文单词列表(list)中最长单词链
Dec 14 Python
Python编写nmap扫描工具
Jul 21 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
调频问题解答
2021/03/01 无线电
PHP 防恶意刷新实现代码
2010/05/16 PHP
php学习笔记(三)操作符与控制结构
2011/08/06 PHP
解析php时间戳与日期的转换
2013/06/06 PHP
php 常用算法和时间复杂度
2013/07/01 PHP
javascript replace方法与正则表达式
2008/02/19 Javascript
两个JavaScript jsFiddle JSBin在线调试器
2010/03/14 Javascript
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
JS图片预加载 JS实现图片预加载应用
2012/12/03 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
2013/01/25 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
2016/02/17 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
Vue 实现双向绑定的四种方法
2018/03/16 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
Vue+Element UI+vue-quill-editor富文本编辑器及插入图片自定义
2019/08/20 Javascript
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
高性能web服务器框架Tornado简单实现restful接口及开发实例
2014/07/16 Python
Python单元测试框架unittest简明使用实例
2015/04/13 Python
python实现中文分词FMM算法实例
2015/07/10 Python
Python+tkinter使用80行代码实现一个计算器实例
2018/01/16 Python
Python Flask基础教程示例代码
2018/02/07 Python
python format 格式化输出方法
2018/07/16 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
django云端留言板实例详解
2019/07/22 Python
关于Django Models CharField 参数说明
2020/03/31 Python
python如何调用百度识图api
2020/09/29 Python
CSS3 倾斜的网页图片库实例教程
2009/11/14 HTML / CSS
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
搞笑车尾标语
2014/06/23 职场文书
公务员个人年终总结
2015/02/12 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
坚持不是死撑,更重要的是心态
2019/08/19 职场文书
pytorch中的model=model.to(device)使用说明
2021/05/24 Python
关于的python五子棋的算法
2022/05/02 Python