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 FTP操作类代码分享
May 13 Python
盘点提高 Python 代码效率的方法
Jul 03 Python
浅析Python中将单词首字母大写的capitalize()方法
May 18 Python
requests和lxml实现爬虫的方法
Jun 11 Python
关于Python如何避免循环导入问题详解
Sep 14 Python
python 生成图形验证码的方法示例
Nov 11 Python
python cumsum函数的具体使用
Jul 29 Python
python实现删除列表中某个元素的3种方法
Jan 15 Python
快速了解Python开发环境Spyder
Jun 29 Python
Python基于httpx模块实现发送请求
Jul 07 Python
Django restful framework生成API文档过程详解
Nov 12 Python
python Pexpect模块的使用
Dec 25 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下实现农历日历的代码
2007/03/07 PHP
php对数组排序代码分享
2014/02/24 PHP
php短网址和数字之间相互转换的方法
2015/03/13 PHP
PHP 传输会话curl函数的实例详解
2017/09/12 PHP
JavaScript 常用函数库详解
2009/10/21 Javascript
JS小框架 fly javascript framework
2009/11/26 Javascript
Javascript中的this绑定介绍
2011/09/22 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
jQuery验证插件validate使用详解
2016/05/11 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
2017/06/13 Javascript
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
2019/07/25 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
JS数组方法reduce的用法实例分析
2020/03/03 Javascript
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
200行自定义python异步非阻塞Web框架
2017/03/15 Python
使用python编写监听端
2018/04/12 Python
基于anaconda下强大的conda命令介绍
2018/06/11 Python
python列表list保留顺序去重的实例
2018/12/14 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
浅谈python中统计计数的几种方法和Counter详解
2019/11/07 Python
Python读取实时数据流示例
2019/12/02 Python
Python自动化xpath实现自动抢票抢货
2020/09/19 Python
python从PDF中提取数据的示例
2020/10/30 Python
HTML5验证以及日期显示的实现详解
2013/07/05 HTML / CSS
美国最大的无人机经销商:DroneNerds
2018/03/20 全球购物
介绍一下write命令
2012/09/24 面试题
暑期研修感言
2014/02/17 职场文书
战略性融资合作协议书范本
2014/10/17 职场文书
父亲节活动总结
2015/02/12 职场文书
重阳节活动主持词
2015/07/04 职场文书
2016七夕情人节广告语
2016/01/28 职场文书
导游词之北京明十三陵
2019/10/28 职场文书
Python+OpenCV实现图片中的圆形检测
2022/04/07 Python
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript