python3.6编写的单元测试示例


Posted in Python onAugust 17, 2019

本文实例讲述了python3.6编写的单元测试。分享给大家供大家参考,具体如下:

使用python3.6编写一个单元测试demo,例如:对学生Student类编写一个简单的单元测试。

1、编写Student类:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
class Student(object):
  def __init__(self,name,score):
    self.name = name
    self.score = score
  def get_grade(self):
    if self.score >= 80 and self.score <= 100:
      return 'A'
    elif self.score >= 60 and self.score <= 79:
      return 'B'
    elif self.score >= 0 and self.score <= 59:
      return 'C'
    else:
      raise ValueError('value is not between 0 and 100')

2、编写一个测试类TestStudent,从unittest.TestCase继承:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import unittest
from student import Student
class TestStudent(unittest.TestCase):
  def test_80_to_100(self):
    s1 = Student('Bart',80)
    s2 = Student('Lisa',100)
    self.assertEqual(s1.get_grade(),'A')
    self.assertEqual(s2.get_grade(),'A')
  def test_60_to_80(self):
    s1 = Student('Bart',60)
    s2 = Student('Lisa',79)
    self.assertEqual(s1.get_grade(),'B')
    self.assertEqual(s2.get_grade(),'B')
  def test_0_to_60(self):
    s1 = Student('Bart',0)
    s2 = Student('Lisa',59)
    self.assertEqual(s1.get_grade(),'C')
    self.assertEqual(s2.get_grade(),'C')
  def test_invalid(self):
    s1 = Student('Bart',-1)
    s2 = Student('Lisa',101)
    with self.assertRaises(ValueError):
      s1.get_grade()
    with self.assertRaises(ValueError):
      s2.get_grade()
#运行单元测试
if __name__ == '__main__':
  unittest.main()

3、运行结果如下:

python3.6编写的单元测试示例

4、行单元测试另一种方法:在命令行通过参数-m unittest直接运行单元测试,例如:python -m unittest student_test

python3.6编写的单元测试示例

最后对使用unittest模块的一些总结:

  1. 编写单元测试时,需要编写一个测试类,从unittest.TestCase继承
  2. 对每一个类测试都需要编写一个test_xxx()方法
  3. 最常用的断言就是assertEqual()
  4. 另一种重要的断言就是期待抛出指定类型的Error,eg:with self.assertRaises(KeyError):
  5. 另一种方法是在命令行通过参数-m unittest直接运行单元测试:eg:python -m unittest student_test
  6. 最简单的运行方式是xx.py的最后加上两行代码:
if __name__ == '__main__':
  unittest.main()

更多Python相关内容感兴趣的读者可查看本站专题:《Python入门与进阶经典教程》、《Python字符串操作技巧汇总》、《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python连接mysql调用存储过程示例
Mar 05 Python
Django中URLconf和include()的协同工作方法
Jul 20 Python
浅谈django中的认证与登录
Oct 31 Python
Python3生成手写体数字方法
Jan 30 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
Feb 07 Python
人脸识别经典算法一 特征脸方法(Eigenface)
Mar 13 Python
Python sorted函数详解(高级篇)
Sep 18 Python
Python批量启动多线程代码实例
Feb 18 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
Mar 09 Python
详解如何修改python中字典的键和值
Sep 29 Python
Django框架请求生命周期实现原理
Nov 13 Python
如何使用Python进行PDF图片识别OCR
Jan 22 Python
python3 实现的对象与json相互转换操作示例
Aug 17 #Python
python3实现的zip格式压缩文件夹操作示例
Aug 17 #Python
django 通过url实现简单的权限控制的例子
Aug 16 #Python
对Django中内置的User模型实例详解
Aug 16 #Python
对Django中的权限和分组管理实例讲解
Aug 16 #Python
django创建最简单HTML页面跳转方法
Aug 16 #Python
在django中实现页面倒数几秒后自动跳转的例子
Aug 16 #Python
You might like
PHP删除非空目录的函数代码小结
2013/02/28 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
thinkphp模板输出技巧汇总
2014/11/24 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
PHP实现用户登录的案例代码
2018/05/10 PHP
php unlink()函数使用教程
2018/07/12 PHP
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
boostrapTable的refresh和refreshOptions区别浅析
2017/01/22 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
Javascript中的async awai的用法
2017/05/17 Javascript
jQuery图片加载失败替换默认图片方法汇总
2017/11/29 jQuery
浅谈Vue.js中ref ($refs)用法举例总结
2017/12/19 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
mpvue小程序循环动画开启暂停的实现方法
2019/05/15 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
2019/11/09 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
python正则分组的应用
2013/11/10 Python
利用Python获取操作系统信息实例
2016/09/02 Python
Python上下文管理器和with块详解
2017/09/09 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
PyQt5+requests实现车票查询工具
2019/01/21 Python
一篇文章搞定Python操作文件与目录
2019/08/13 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
2020/07/13 Python
Nike德国官网:Nike.com (DE)
2018/11/13 全球购物
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
如何查看在weblogic中已经发布的EJB
2012/06/01 面试题
领导干部廉政承诺书
2014/03/27 职场文书
《大作家的小老师》教学反思
2014/04/16 职场文书
宣传部部长竞选演讲稿
2014/04/26 职场文书
诉前财产保全担保书
2014/05/20 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
JS前端可扩展的低代码UI框架Sunmao使用详解
2022/07/23 Javascript