Python单元和文档测试实例详解


Posted in Python onApril 11, 2019

本文实例讲述了Python单元和文档测试。分享给大家供大家参考,具体如下:

单元和文档测试

1、单元测试

单元测试就是用来对一个模块、一个函数或者一个类来进行正确性的检测工作。
1.若是单元测试通过,则证明测试的函数能够正确的工作,
2.反之则证明要么函数有bug要么输入不合法,总之我们需要修复我们的函数功能。

2、对函数进行单元测试

创建python文件MathFunc.py,内容如下:

def mySum(x,y):
  return x + y
def mySub(x,y)
  return x -y
print(mySum(1,2))

创建python文件的text01.py,内容如下:

import unittest
from MathFunc import mySum, mySub
#测试类 继承自unittest.TestCase
class Test(unittest.TestCase):
  #下面两个方法存在的意义:假设需要连接数据库,当测试完毕之后,需要断开和数据库的连接
  def setUp(self):
    print("开始测试时自动调用")
  def tearDown(self):
    print("结束时自动调用")
  #测试相应的函数
  #一般情况下,测试函数命名格式:text_需要被测试的函数名
  def test_mySum(self):
    #断言:对函数命名格式:text_需要被测试的函数名
    self.assertEqual(mySum(1,2),3,"加法有误")
  def test_mySub(self):
    self.asserEqual(mySub(2,1),1,"减法有误")
#当主程序运行的时候,开始进行单元测试
if __name__ == "__main__":
  unittest.main()

运行text01.py文件,发现正常,然后修改MathFunc.py文件中的内容,可按照下面的方式修改。

def mySum(x,y):
  return x + y + 1
def mySub(x, y):
  return x - y
print(mySub(1,2))

再次运行text01.py文件,会出现错误信息。

3、对类进行单元测试

先创建一个类文件person.py,内容如下:

class Person(object):
  #构造方法
  def __init__(self, name, age):
    #给成员变量赋值
    self.name = name
    self.age = age
  def getAge(self):
    return self.age

创建text02.py文件,进行类的单元测试,内容如下:

import unittest
from person import person
class Test(unittest.TestCase):
  def test_init(self):
    p = Person('hanmeimei',20)
    self.asserEqual(p.name,"hanmeimei","属性值有误")
  def test_getAge(self):
    p = Person('hanmeimei',22)
    self.assertEqual(p.getAge(),p.age,"getAge函数有误")
if __name__ = "__main__":
  unittest.mian()

演示,运行text02.py文件,程序正常运行,修改person.py文件中的内容,具体内容如下:

class Person(object):
  #构造方法
  def __init__(self, name, age):
    #给成员变量赋值
    self.name = name
    self.age = age
  def getAge(self):
    return self.age+1

再次运行会报错

对类的单元测试:本质上还是对方法的单元测试。

4、文档测试

文档测试的作用:可以提取注释找那个的代码执行
doctest模块可以提取注释中的代码执行
doctest严格按照python的交互模式的输入进行提取

import doctest
def mySum(x,y):
  #对函数进行功能和使用说明
  '''
  求两个数的和
  get The sum from x and y
  :param x:firstNum
  :param y:secondNum
  :return sum
  #注意有空格
  example:
  >>> print(mySum(1,2))
  3
  '''
  return x + y
print(mySum(1,2))
#进行文档测试,在当前文件中进行即可
doctest.testmod()

注意:演示的时候,主要测试

example:

>>> print(mySum(1,2))
3

关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python学习笔记(一)(基础入门之环境搭建)
Jun 05 Python
pymssql数据库操作MSSQL2005实例分析
May 25 Python
Python通过正则表达式选取callback的方法
Jul 18 Python
Python日志模块logging基本用法分析
Aug 23 Python
Python父目录、子目录的相互调用方法
Feb 16 Python
python3 下载网络图片代码实例
Aug 27 Python
Jupyter Notebook输出矢量图实例
Apr 14 Python
Python flask框架实现浏览器点击自定义跳转页面
Jun 04 Python
Python识别验证码的实现示例
Sep 30 Python
Python实现对word文档添加密码去除密码的示例代码
Dec 29 Python
用Python提取PDF表格的方法
Apr 11 Python
Python自动化测试PO模型封装过程详解
Jun 22 Python
Python的高阶函数用法实例分析
Apr 11 #Python
Python2与Python3的区别实例分析
Apr 11 #Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 #Python
基于django channel实现websocket的聊天室的方法示例
Apr 11 #Python
CentOS7安装Python3的教程详解
Apr 10 #Python
django富文本编辑器的实现示例
Apr 10 #Python
详解Python:面向对象编程
Apr 10 #Python
You might like
PHP游戏编程25个脚本代码
2011/02/08 PHP
js 居中漂浮广告
2010/03/21 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
node.js中的buffer.toJSON方法使用说明
2014/12/14 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
jQuery如何防止这种冒泡事件发生
2015/02/27 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
详解从NodeJS搭建中间层再谈前后端分离
2018/11/13 NodeJs
JavaScript提升机制Hoisting详解
2019/10/23 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
2019/11/12 Javascript
jQuery实现小火箭返回顶部特效
2020/02/03 jQuery
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
微信小程序纯文本实现@功能
2020/04/08 Javascript
python3.5使用tkinter制作记事本
2016/06/20 Python
Python实现网络端口转发和重定向的方法
2016/09/19 Python
python实现傅里叶级数展开的实现
2018/07/21 Python
python数据挖掘需要学的内容
2019/06/23 Python
pytorch程序异常后删除占用的显存操作
2020/01/13 Python
python实现canny边缘检测
2020/09/14 Python
详解KMP算法以及python如何实现
2020/09/18 Python
HTML5之SVG 2D入门4—笔画与填充
2013/01/30 HTML / CSS
伦敦所有西区剧院演出官方票务代理:Theatre Tickets Direct
2017/05/26 全球购物
澳大利亚巧克力花束和礼品网站:Tastebuds
2019/03/15 全球购物
沃尔玛旗下墨西哥超市:Bodega Aurrera
2020/11/13 全球购物
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
2015/07/30 面试题
销售顾问的岗位职责
2013/11/13 职场文书
数控专业个人求职信范例
2013/11/29 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
学校读书活动总结
2014/06/30 职场文书
党章培训心得体会
2014/09/04 职场文书
简单租房协议书
2014/10/21 职场文书
2014年培训工作总结范文
2014/11/27 职场文书
Python序列化与反序列化相关知识总结
2021/06/08 Python