Python单元测试简单示例


Posted in Python onJuly 03, 2018

本文实例讲述了Python单元测试方法。分享给大家供大家参考,具体如下:

Eric书中《Python编程从入门到实践》中的一个例子。

《Python编程从入门到实践》随书源码可至此下载:https://3water.com/books/582019.html。

首先定义了一个测试函数:

namefunction.py

#-*- coding:cp936 -*-
def get_formmed_name(first, last):
 """该函数根据姓和名生成一个完整的姓名"""
 full_name = first + ' ' + last
 return full_name.title()

然后编写了一个测试该函数的模块:

names.py

#-*- coding:cp936 -*-
from name_function import get_formmed_name
"""该文件用来测试姓名生成函数"""
print "Enter 'q' to quit any time."
while True:
 first = raw_input("\nEnter first name:")
 if first == 'q':
  break
 last = raw_input("Enter last name:")
 if last == 'q':
  break
 formatted_name = get_formmed_name(first,last)
 print "Formmated name:",formatted_name

通过测试,name_function中的函数可以实现其功能。

最后是单元测试和测试用例的编写。

test_name_function.py

# coding:utf-8
import unittest
from name_function import get_formmed_name
class NamesTestCase(unittest.TestCase):
 """测试name_function.py"""
 def test_first_last_name(self):
  """能够正确处理像Janis Joplin这样的姓名吗?"""
  formatted_name = get_formmed_name('janis','joplin')
  self.assertEqual(formatted_name,'Janis Joplin')

注意这个地方,我在Python 2.7的版本中直接调用书上的主函数unittest.main()时程序无法通过,而改用以下调用方式即可

if __name__ == '__main__':
 unittest

通过对以上单元测试模块分析:

1. 导入单元测试类unittest

2. 导入要测试的函数,本例为name_function模块中的get_formatted_name() 函数

3. 创建一个继承于unittest.TestCase的类

4. 在类中定义一系列方法对函数的行为进行不同方面的测试,需要注意的是一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。

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

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

Python 相关文章推荐
Python 返回汉字的汉语拼音
Feb 27 Python
python私有属性和方法实例分析
Jan 15 Python
举例讲解Python的lambda语句声明匿名函数的用法
Jul 01 Python
在Python中执行系统命令的方法示例详解
Sep 14 Python
pycharm的console输入实现换行的方法
Jan 16 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
Feb 21 Python
python反编译学习之字节码详解
May 19 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
Jan 16 Python
解决tensorboard多个events文件显示紊乱的问题
Feb 15 Python
使用pycharm和pylint检查python代码规范操作
Jun 09 Python
利用Python的folium包绘制城市道路图的实现示例
Aug 24 Python
Python学习之time模块的基本使用
Jan 17 Python
Python3使用pandas模块读写excel操作示例
Jul 03 #Python
Python+pandas计算数据相关系数的实例
Jul 03 #Python
在dataframe两列日期相减并且得到具体的月数实例
Jul 03 #Python
python设置值及NaN值处理方法
Jul 03 #Python
数据清洗--DataFrame中的空值处理方法
Jul 03 #Python
根据DataFrame某一列的值来选择具体的某一行方法
Jul 03 #Python
Django框架的使用教程路由请求响应的方法
Jul 03 #Python
You might like
php判断终端是手机还是电脑访问网站的思路及代码
2013/04/24 PHP
CI框架实现优化文件上传及多文件上传的方法
2017/01/04 PHP
Laravel使用模型实现like模糊查询的例子
2019/10/24 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
2008/10/29 Javascript
ie下jquery.getJSON的缓存问题的处理方法
2013/03/29 Javascript
3种不同方式的焦点图轮播特效分享
2013/10/30 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
jQuery过滤选择器:not()方法使用介绍
2014/04/20 Javascript
详解JavaScript中的表单验证
2015/06/16 Javascript
提高jQuery性能优化的技巧
2015/08/03 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
2016/08/01 Javascript
利用jQuery插件imgAreaSelect实现获得选择域的图像信息
2016/12/02 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
微信小程序商品详情页规格属性选择示例代码
2017/10/30 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
element-ui 表格数据时间格式化的方法
2018/08/24 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
JavaScript修改注册表实例代码
2020/01/05 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
python+django快速实现文件上传
2016/10/24 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
python正则表达式面试题解答
2020/04/28 Python
python使用tornado实现登录和登出
2018/07/28 Python
Python3实现的判断环形链表算法示例
2019/03/07 Python
Python使用pyautocad+openpyxl处理cad文件示例
2019/07/11 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
详解Python GUI编程之PyQt5入门到实战
2020/12/10 Python
美国一家全面的在线零售鞋类公司:SHOEBACCA
2017/01/06 全球购物
法人授权委托书公证范本
2014/09/14 职场文书
消防安全培训工作总结
2015/10/23 职场文书
java解析XML详解
2021/07/09 Java/Android