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实现猜数字游戏(无重复数字)示例分享
Mar 29 Python
Python原始字符串(raw strings)用法实例
Oct 13 Python
python+opencv轮廓检测代码解析
Jan 05 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
May 15 Python
使用Windows批处理和WMI设置Python的环境变量方法
Aug 14 Python
Django 在iframe里跳转顶层url的例子
Aug 21 Python
详解Python文件修改的两种方式
Aug 22 Python
python实现发送form-data数据的方法详解
Sep 27 Python
Python tkinter实现图片标注功能(完整代码)
Dec 08 Python
python 串口读取+存储+输出处理实例
Dec 26 Python
使用Python来做一个屏幕录制工具的操作代码
Jan 18 Python
Python 中如何使用 virtualenv 管理虚拟环境
Jan 21 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
B2K与车机的中波PK
2021/03/02 无线电
解析如何在PHP下载文件名中解决乱码的问题
2013/06/20 PHP
PHP自带函数给数字或字符串自动补齐位数
2014/07/29 PHP
wordpress安装过程中遇到中文乱码的处理方法
2015/04/21 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
CodeIgniter多语言实现方法详解
2016/01/20 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
PHP创建XML接口示例
2019/07/04 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
把input初始值不写value的具体实现方法
2013/07/04 Javascript
高效率JavaScript编写技巧整理
2013/08/23 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
Vue获取DOM元素样式和样式更改示例
2017/03/07 Javascript
JS获取字符对应的ASCII码实例
2017/09/10 Javascript
基于vue.js实现分页查询功能
2018/12/29 Javascript
Vue根据条件添加click事件的方式
2019/11/09 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
Python采用Django开发自己的博客系统
2020/09/29 Python
python实现批量监控网站
2016/09/09 Python
python验证码识别的示例代码
2017/09/21 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
在pycharm中关掉ipython console/PyDev操作
2020/06/09 Python
基于HTML5 Canvas:字符串,路径,背景,图片的详解
2013/05/09 HTML / CSS
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
神路信息Java面试题目
2013/03/31 面试题
几个MySql的面试题
2013/04/22 面试题
大学自我鉴定范文
2013/12/26 职场文书
小学作文评语大全
2014/04/21 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
numpy数据类型dtype转换实现
2021/04/24 Python
面试中老生常谈的MySQL问答集锦夯实基础
2022/03/13 MySQL