Python unittest框架操作实例解析


Posted in Python onApril 13, 2020

操作步骤

  • 导入框架,import unitest
  • 测试类必须继承类:.class 类名(unittest.TestCase):
  • 在类中所有定义testXXX(区分大小写)开头的函数都是可执行的测试用例
  • 钩子方法setUp(每个测试用例前执行)、tearDown(每个测试用例后执行)
  • 执行用例unitest.main()
  • 断言

常用断言

方法 等价于 描述
assertEqual(a,b) a==b 值是否相等
aassertNotEqual(a,b) a!=b 值是否不相等
aasserIs(a,b) a is b 值是否相同
aassertIsNot(a,b) a is not b 值是否不同
assertIn(a,b) a in b a是否包含b
assertNotIn(a,b) a not in b a是否不包含b
ssertTrue(a) bool(a) is true 是否为真
assertFalse(a) bool(a)is false 是否为假
assertIsNone(a) a is None 是否为空
assertIsNotNone(a) a is None 是否不为空
assertIsInstance(a,b) Instance(a,b) a与b的数据类型一样
assertNotIsInstance(a) not Instance(a,b) a与b的数据类型不一样

举例说明

#!/usr/bin/python3
# encoding:utf-8
'''
Created on 2019-10-12
@author: EDZ
'''
#!/usr/bin/python3
# encoding:utf-8
import unittest

#继承unittest基类
class un_test(unittest.TestCase):
  def setUp(self):
    print("钩子方法,每个用例执行前执行")
  def tearDown(self):
    print("钩子方法,每个用例执行后执行")
  #必须testXXX命名函数才会被执行
  def test_Equal(self):
    print('1.assertEqual值相同')
    a='中国'
    b='中国'
    self.assertEqual(a,b)
  def test_Is(self):
    a='中国'
    b='中国'
    print('2.assertIs值相同')
    self.assertIs(a,b)
  def test_Instance(self):
    a = 'aaa' 
    b = [1,2,3,4]
    print(type(a),type(b),"3.数据类型不相等")
    self.assertNotIsInstance(type(a),type(b))
  def cf(self,a,b):
    return a/b  
  def test_rasi(self):
    print('4.1/0抛出异常')
    self.assertRaises(ZeroDivisionError,self.cf,1,0)
  
if __name__=="__main__":
  #unittest执行本类全部testXXX命名的测试用例
  unittest.main()
  #-----------下面为特殊加载方式-------------------
  '''
  #通过文件模块加载(loadTestsFromModule)
  suite = unittest.TestSuite()
  loader = unittest.TestLoader()#用例加载器
  #文件模块名,例如有文件moku.py 第一步:import moku loader.loadTestsFromModule(文件名)
  suite.addTest(loader.loadTestsFromModule(moku))
  
  #通过测试类来加载(loadTestsFromTestCase)
  suite = unittest.TestSuite()
  loader = unittest.TestLoader()#用例加载器
  #例如有文件moku.py 其中有类名classT 第一步导入类:from moku import classT (loader.loadTestsFromTestCase(classT))#类名
  suite.addTest(loader.loadTestsFromTestCase(un_test))#如果类在本文件模块内直接加载。

  #一个一个添加
  suite = unittest.TestSuite()
  suite.addTest(un_test('test_Equal'))#(类名('函数'))

  #测试用例数较多时,采用defaultTestLoader.discover()方式
  suite = unittest.defaultTestLoader.discover('./',pattern='y*.py', top_level_dir=None)
  #1、因为unittest中规定,测试用例必须test开头,所以discover中的pattern格式才是test*.py
  #2、start_dir是存放测试用例的目录
  #pattern='test*.py':表示用例文件名的匹配原则。此处匹配以“test”开头的.py 类型的文件,* 表示任意多个字符
  #top_level_dir= None 测试模块的顶层目录,如果没有顶层目录,默认为None
 
  runner = unittest.TextTestRunner(verbosity=2)
  runner.run(suite)
  
      这里的verbosity是一个选项,表示测试结果的信息复杂度,有三个值
      0 (静默模式): 你只能获得总的测试用例数和总的结果 比如 总共100个 失败20 成功80
      1 (默认模式): 非常类似静默模式 只是在每个成功的用例前面有个“.” 每个失败的用例前面有个 “F”
      2 (详细模式):测试结果会显示每个测试用例的所有相关的信息
      并且 你在命令行里加入不同的参数可以起到一样的效果
      加入 --quiet 参数 等效于 verbosity=0
      加入--verbose参数等效于 verbosity=2
      什么都不加就是 verbosity=1</pre>
  '''

运行结果

钩子方法,每个用例执行前执行
1.assertEqual值相同
钩子方法,每个用例执行后执行
钩子方法,每个用例执行前执行
<class 'str'> <class 'list'> 3.数据类型不相等
钩子方法,每个用例执行后执行
钩子方法,每个用例执行前执行
2.assertIs值相同
钩子方法,每个用例执行后执行
钩子方法,每个用例执行前执行
4.1/0抛出异常
钩子方法,每个用例执行后执行
Ran 4 tests in 0.001s
OK
说明:钩子方法每个用例都执行,Ran 4 表示成功执行4个testXXX的测试用例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用百度翻译进行中翻英示例
Apr 14 Python
python进阶教程之函数参数的多种传递方法
Aug 30 Python
用Python操作字符串之rindex()方法的使用
May 19 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
Dec 03 Python
Python实现确认字符串是否包含指定字符串的实例
May 02 Python
pandas DataFrame 交集并集补集的实现
Jun 24 Python
python多线程实现TCP服务端
Sep 03 Python
Python使用selenium + headless chrome获取网页内容的方法示例
Oct 16 Python
python基于event实现线程间通信控制
Jan 13 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
Mar 09 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
Jun 24 Python
Pytorch mask-rcnn 实现细节分享
Jun 24 Python
windows python3安装Jupyter Notebooks教程
Apr 13 #Python
Python MOCK SERVER moco模拟接口测试过程解析
Apr 13 #Python
JupyterNotebook 输出窗口的显示效果调整方法
Apr 13 #Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
Apr 13 #Python
Python selenium文件上传下载功能代码实例
Apr 13 #Python
20行Python代码实现视频字符化功能
Apr 13 #Python
解决jupyter notebook 前面书写后面内容消失的问题
Apr 13 #Python
You might like
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
用PHP4访问Oracle815
2006/10/09 PHP
提高php编程效率技巧
2015/08/13 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
js计数器代码
2006/11/04 Javascript
prototype 学习笔记整理
2009/07/17 Javascript
node.js中的fs.readdirSync方法使用说明
2014/12/17 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
BootStrap实现轮播图效果(收藏)
2016/12/30 Javascript
babel之配置文件.babelrc入门详解
2018/02/22 Javascript
vue安装和使用scss及sass与scss的区别详解
2018/10/15 Javascript
微信小程序实现留言功能
2018/10/31 Javascript
Angular8基础应用之表单及其验证
2019/08/11 Javascript
Vue实现手机计算器
2020/08/17 Javascript
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
简介Django中内置的一些中间件
2015/07/24 Python
深入理解NumPy简明教程---数组3(组合)
2016/12/17 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
python遍历文件夹下所有excel文件
2018/01/03 Python
Python面向对象类继承和组合实例分析
2018/05/28 Python
TensorFlow利用saver保存和提取参数的实例
2018/07/26 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
2018/11/06 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
Python API自动化框架总结
2019/11/12 Python
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
高一物理教学反思
2014/01/24 职场文书
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
毕业纪念册寄语大全
2015/02/26 职场文书
格列佛游记读书笔记
2015/06/30 职场文书
省级三好学生主要事迹材料
2015/11/03 职场文书