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字典get()方法用法分析
Apr 17 Python
解决python 自动安装缺少模块的问题
Oct 22 Python
python-opencv 将连续图片写成视频格式的方法
Jan 08 Python
Python实现微信消息防撤回功能的实例代码
Apr 29 Python
Python根据服务获取端口号的方法
Sep 25 Python
Python多重继承之菱形继承的实例详解
Feb 12 Python
Python安装Bs4的多种方法
Nov 28 Python
python中实现词云图的示例
Dec 19 Python
Python3爬虫ChromeDriver的安装实例
Feb 06 Python
Python一行代码实现自动发邮件功能
May 30 Python
python中的装饰器该如何使用
Jun 18 Python
Python+Tkinter打造签名设计工具
Apr 01 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
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
sourcesafe管理phpproj文件的补充说明(downmoon)
2009/04/11 PHP
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
JS模拟面向对象全解(二、类型与赋值)
2011/07/13 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
jQuery实现多按钮单击变色
2014/11/27 Javascript
实现placeholder效果的方案汇总
2015/06/11 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
实例解析angularjs的filter过滤器
2016/12/14 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
微信小程序中的swiper组件详解
2017/04/14 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
详解babel升级到7.X采坑总结
2019/05/12 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
2019/09/15 jQuery
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
Python Cookie 读取和保存方法
2018/12/28 Python
python多进程下的生产者和消费者模型
2020/05/07 Python
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
北京某公司的.net笔试题
2014/03/20 面试题
广州某公司软件工程师面试题
2014/12/22 面试题
如何用JQuery进行表单验证
2013/05/29 面试题
风险评估实施方案
2014/03/09 职场文书
农村党支部书记党群众路线四风问题整改措施
2014/09/26 职场文书
2014年教学工作总结
2014/11/13 职场文书
工作推荐信模板
2015/03/25 职场文书
学校食堂管理制度
2015/08/04 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
股东协议书范本2016
2016/03/21 职场文书
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android
Vue3中toRef与toRefs的区别
2022/03/24 Vue.js
Python简易开发之制作计算器
2022/04/28 Python