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版的文曲星猜数字游戏代码
Sep 02 Python
分析python服务器拒绝服务攻击代码
Jan 16 Python
Python的ORM框架SQLAlchemy入门教程
Apr 28 Python
Python中的random()方法的使用介绍
May 15 Python
python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
May 15 Python
Python利用Nagios增加微信报警通知的功能
Feb 18 Python
Python列表与元组的异同详解
Jul 02 Python
python获取txt文件词向量过程详解
Jul 05 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
Feb 29 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
Mar 27 Python
Python2.x与3​​.x版本有哪些区别
Jul 09 Python
python中numpy数组与list相互转换实例方法
Jan 29 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(5) 类和对象
2010/02/16 PHP
apache php模块整合操作指南
2012/11/16 PHP
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
php实现小程序支付完整版
2018/10/09 PHP
javascript 弹出层组件(升级版)
2011/05/12 Javascript
jquery-syntax动态语法着色示例代码
2014/05/14 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
2015/06/01 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
详解JavaScript节流函数中的Throttle
2016/07/16 Javascript
JS正则替换掉小括号及内容的方法
2016/11/29 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
详解Vue 全局引入bass.scss 处理方案
2018/03/26 Javascript
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
2018/08/24 jQuery
Windows上node.js的多版本管理工具用法实例分析
2019/11/06 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
使用setup.py安装python包和卸载python包的方法
2013/11/27 Python
python利用socketserver实现并发套接字功能
2018/01/26 Python
opencv与numpy的图像基本操作
2019/03/08 Python
python字符串的index和find的区别详解
2020/06/20 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
Linux的主要特性
2014/10/06 面试题
大学生四个方面的自我评价
2013/09/19 职场文书
教师岗位职责范本
2013/12/29 职场文书
员工年度工作总结2015
2015/05/18 职场文书
焦点访谈观后感
2015/06/11 职场文书
环保建议书作文300字
2015/09/14 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL
php实例化对象的实例方法
2021/11/17 PHP
python lambda 表达式形式分析
2022/04/03 Python