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将MongoDB里的ObjectId转换为时间戳的方法
Mar 13 Python
python threading模块操作多线程介绍
Apr 08 Python
python统计文本字符串里单词出现频率的方法
May 26 Python
Python的装饰器用法学习笔记
Jun 24 Python
python安装Scrapy图文教程
Aug 14 Python
python实现mysql的读写分离及负载均衡
Feb 04 Python
详解Python中的分组函数groupby和itertools)
Jul 11 Python
Windows 64位下python3安装nltk模块
Sep 19 Python
Flask框架学习笔记之使用Flask实现表单开发详解
Aug 12 Python
Python3 JSON编码解码方法详解
Sep 06 Python
Python函数中的可变长参数详解
Sep 12 Python
Docker如何部署Python项目的实现详解
Oct 26 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编程最快明白》第三讲:php数组
2010/11/01 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
使用xampp搭建运行php虚拟主机的详细步骤
2015/10/21 PHP
PHP读取大文件的多种方法介绍
2016/04/04 PHP
使用php实现从身份证中提取生日
2016/05/09 PHP
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
Prototype Hash对象 学习
2009/07/19 Javascript
新鲜出炉的js tips提示效果
2011/04/03 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
2013/04/22 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
2013/12/11 Javascript
document节点对象的获取方式示例介绍
2013/12/24 Javascript
javascript中取前n天日期的两种方法分享
2014/01/26 Javascript
js+cookies实现悬浮购物车的方法
2015/05/25 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
AngularJS 执行流程详细介绍
2016/08/18 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
Vue程序调试的方法
2019/06/17 Javascript
NodeJs 实现简单WebSocket即时通讯的示例代码
2019/08/05 NodeJs
快速解决layui弹窗按enter键不停弹窗的问题
2019/09/18 Javascript
vue实现点击按钮切换背景颜色的示例代码
2020/06/23 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
2020/11/02 Javascript
netbeans7安装python插件的方法图解
2013/12/24 Python
迪卡侬(Decathlon)加拿大官网:源自法国的运动专业超市
2020/11/22 全球购物
应届护士推荐信
2013/11/16 职场文书
爱的奉献演讲稿
2014/09/10 职场文书
2014年学生会工作总结
2014/11/07 职场文书
个人政治思想总结
2015/03/05 职场文书
小学生禁毒教育心得体会
2016/01/15 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
教你怎么用Python selenium操作浏览器对象的基础API
2021/06/23 Python
python 单机五子棋对战游戏
2022/04/28 Python
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技