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 变量类型及命名规则介绍
Jun 08 Python
python实现下载指定网址所有图片的方法
Aug 08 Python
Python中Django 后台自定义表单控件
Mar 28 Python
python自动化报告的输出用例详解
May 30 Python
Sanic框架请求与响应实例分析
Jul 16 Python
浅析Python与Mongodb数据库之间的操作方法
Jul 01 Python
python字典的遍历3种方法详解
Aug 10 Python
PyTorch: 梯度下降及反向传播的实例详解
Aug 20 Python
python实现代码统计程序
Sep 19 Python
Python调用.net动态库实现过程解析
Jun 05 Python
sklearn和keras的数据切分与交叉验证的实例详解
Jun 19 Python
Python实现信息管理系统
Jun 05 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
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
PHP编码转换
2012/11/05 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
GRID拖拽行的实例代码
2013/07/18 Javascript
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
Javascript冒泡排序算法详解
2014/12/03 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
2015/01/09 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
2015/08/22 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
AngularJS中如何使用echart插件示例详解
2016/10/26 Javascript
vuejs绑定class和style样式
2017/04/11 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
2017/09/19 Javascript
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
原生jQuery实现只显示年份下拉框
2020/12/24 jQuery
python实现图片批量剪切示例
2014/03/25 Python
python基于xml parse实现解析cdatasection数据
2014/09/30 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
python使用pycharm环境调用opencv库
2018/02/11 Python
python实现简单登陆系统
2018/10/18 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
2019/08/09 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
2020/02/25 Python
python 比较字典value的最大值的几种方法
2020/04/17 Python
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
大学生暑期实践感言
2014/02/26 职场文书
原料仓管员岗位职责
2014/04/12 职场文书
二十年同学聚会感言
2015/07/30 职场文书
vue 实现弹窗关闭后刷新效果
2022/04/08 Vue.js