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之有容乃大的list(4)
Sep 28 Python
Python字符串格式化
Jun 15 Python
Python脚本实现虾米网签到功能
Apr 12 Python
python人民币小写转大写辅助工具
Jun 20 Python
python3实现用turtle模块画一棵随机樱花树
Nov 21 Python
使用tensorboard可视化loss和acc的实例
Jan 21 Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 Python
Django使用Profile扩展User模块方式
May 14 Python
python利用线程实现多任务
Sep 18 Python
python map比for循环快在哪
Sep 21 Python
Python爬虫实现selenium处理iframe作用域问题
Jan 27 Python
python切片作为占位符使用实例讲解
Feb 17 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面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
php创建基本身份认证站点的方法详解
2013/06/08 PHP
php5.3以后的版本连接sqlserver2000的方法
2014/07/28 PHP
修复IE9&amp;safari 的sort方法
2011/10/21 Javascript
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
javascript 三种方法实现获得和设置以及移除元素属性
2013/03/20 Javascript
jquery.cookie.js使用指南
2015/01/05 Javascript
jQuery时间轴插件使用详解
2015/07/16 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
Vue 去除路径中的#号
2018/04/19 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
详解Vue中使用Axios拦截器
2019/04/22 Javascript
mpvue网易云短信接口实现小程序短信登录的示例代码
2020/04/03 Javascript
uniapp微信小程序:key失效的解决方法
2021/01/20 Javascript
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
python抓取网页图片示例(python爬虫)
2014/04/27 Python
Python 读取某个目录下所有的文件实例
2018/06/23 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
Python读取文件内容为字符串的方法(多种方法详解)
2020/03/04 Python
python连接mysql有哪些方法
2020/06/24 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
全天然狗零食:Best Bully Sticks
2016/09/22 全球购物
布鲁明戴尔百货店:Bloomingdale’s
2016/12/21 全球购物
国外平面设计素材网站:The Hungry JPEG
2017/03/28 全球购物
shell变量的作用空间是什么
2013/08/17 面试题
毕业生怎样写好自荐信
2013/11/11 职场文书
出纳工作岗位责任制
2014/02/02 职场文书
护士旷工检讨书
2015/08/15 职场文书
体育委员竞选稿
2015/11/21 职场文书