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学习之asyncore模块用法实例教程
Sep 29 Python
Python中文竖排显示的方法
Jul 28 Python
python用装饰器自动注册Tornado路由详解
Feb 14 Python
利用Python如何生成便签图片详解
Jul 09 Python
Python选择网卡发包及接收数据包
Apr 04 Python
PyQt5 加载图片和文本文件的实例
Jun 14 Python
Pycharm运行加载文本出现错误的解决方法
Jun 27 Python
python动态进度条的实现代码
Jul 03 Python
python list转置和前后反转的例子
Aug 26 Python
通过实例解析Python调用json模块
Dec 11 Python
在django中实现choices字段获取对应字段值
Jul 12 Python
pytorch 实现变分自动编码器的操作
May 24 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获取金书网的书名的实现代码
2010/06/11 PHP
老生常谈PHP数组函数array_merge(必看篇)
2017/05/25 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
js判断上传文件的类型和大小示例代码
2013/10/18 Javascript
JS按字节截取字符长度实例
2013/11/20 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
jQuery消息提示框插件Tipso
2015/05/04 Javascript
微信小程序动态添加分享数据
2017/06/14 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
JS/HTML5游戏常用算法之追踪算法实例详解
2018/12/12 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
创建与框架无关的JavaScript插件
2020/12/01 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
Python的Django框架中if标签的相关使用
2015/07/15 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
python实践项目之监控当前联网状态详情
2019/05/23 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
Python Selenium库的基本使用教程
2021/01/04 Python
利用纯css3实现的文字亮光特效的代码演示
2014/11/27 HTML / CSS
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
将HTML5 Canvas的内容保存为图片借助toDataURL实现
2013/05/20 HTML / CSS
英国最大的在线快递公司之一:ParcelHero
2019/11/04 全球购物
小学班主任评语大全
2014/04/23 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
安全隐患整改报告
2014/11/06 职场文书
城管个人总结
2015/02/28 职场文书
中小企业员工手册范本
2015/05/14 职场文书
车间安全生产管理制度
2015/08/06 职场文书
导游词之峨眉乐山/兵马俑/北京故宫御花园
2019/09/03 职场文书