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天气预报采集器实现代码(网页爬虫)
Oct 07 Python
python实现对一个完整url进行分割的方法
Apr 29 Python
python简单猜数游戏实例
Jul 09 Python
python 遍历字符串(含汉字)实例详解
Apr 04 Python
python 读写中文json的实例详解
Oct 29 Python
python破解zip加密文件的方法
May 31 Python
python enumerate内置函数用法总结
Jan 07 Python
Python StringIO及BytesIO包使用方法解析
Jun 15 Python
浅谈Python 钉钉报警必备知识系统讲解
Aug 17 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
Dec 28 Python
Python入门基础之数字字符串与列表
Feb 01 Python
python3实现无权最短路径的方法
May 12 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 Xdebug的安装与使用详解
2013/06/20 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
PHP 与 UTF-8 的最佳实践详细介绍
2017/01/04 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
如何在Mozilla Gecko 用Javascript加载XSL
2007/01/09 Javascript
javascript函数中的arguments参数
2010/08/01 Javascript
IE 当eval遇上function的处理
2011/08/09 Javascript
对table和ul实现js分页示例分享
2014/02/24 Javascript
JavaScript的作用域和块级作用域概念理解
2014/09/21 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
动态加载js的方法汇总
2015/02/13 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
BootStrap fileinput.js文件上传组件实例代码
2017/02/20 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
vue-iview动态新增和删除的方法
2020/06/17 Javascript
JavaScript 如何计算文本的行数的实现
2020/09/14 Javascript
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
python正向最大匹配分词和逆向最大匹配分词的实例
2018/11/14 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
详解HTML5 canvas绘图基本使用方法
2018/01/29 HTML / CSS
基于canvas使用贝塞尔曲线平滑拟合折线段的方法
2018/01/10 HTML / CSS
骆驼官方商城:CAMEL
2016/11/22 全球购物
英国最大的在线奢侈手表零售商:Jura Watches
2018/01/29 全球购物
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
澳大利亚音乐商店:Bava’s Music City
2019/05/05 全球购物
医院总经理职责
2013/12/26 职场文书
新闻专业毕业生英文求职信
2014/03/19 职场文书
新闻传播专业求职信
2014/07/22 职场文书
同学聚会邀请函
2015/01/30 职场文书
2015年创先争优活动总结
2015/03/27 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python