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统计列表中的重复项出现的次数的方法
Aug 18 Python
在Python的Django框架中编写错误提示页面
Jul 22 Python
浅谈python中的变量默认是什么类型
Sep 11 Python
python 实现tar文件压缩解压的实例详解
Aug 20 Python
Python中用post、get方式提交数据的方法示例
Sep 22 Python
python变量命名的7条建议
Jul 04 Python
Python基础之函数原理与应用实例详解
Jan 03 Python
python dumps和loads区别详解
Feb 04 Python
python图片剪裁代码(图片按四个点坐标剪裁)
Mar 10 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
Jul 13 Python
Python可视化工具如何实现动态图表
Oct 23 Python
pytorch常用数据类型所占字节数对照表一览
May 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学习教程之第2天
2008/06/15 PHP
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
php中explode函数用法分析
2014/11/15 PHP
php文件上传的两种实现方法
2016/04/04 PHP
用Laravel Sms实现laravel短信验证码的发送的实现
2018/11/29 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
把textarea中字符串里含有的回车换行替换成<br>的javascript代码
2007/04/20 Javascript
js replace正则表达式应用案例讲解
2013/01/17 Javascript
框架页面高度自动刷新的Javascript脚本
2013/11/01 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
总结JavaScript中布尔操作符||与&&的使用技巧
2015/11/17 Javascript
jquery mobile移动端幻灯片滑动切换效果
2020/04/15 Javascript
react-native之ART绘图方法详解
2017/08/08 Javascript
原生JS实现日历组件的示例代码
2017/09/22 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
vue项目中使用tinymce编辑器的步骤详解
2018/09/11 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
2020/09/10 Javascript
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
python从网络读取图片并直接进行处理的方法
2015/05/22 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
2017/09/05 Python
python中count函数简单的实例讲解
2020/02/06 Python
PyChon中关于Jekins的详细安装(推荐)
2020/12/28 Python
荷兰街头时尚之家:Funkie House
2019/03/18 全球购物
Loreto Gallo英国:欧洲领先的在线药房
2021/01/21 全球购物
中英文自我评价语句
2013/12/20 职场文书
三年级数学教学反思
2014/01/31 职场文书
国际经济与贸易专业求职信
2014/07/10 职场文书
出资证明书范本(标准版)
2014/09/24 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
2019年作为一名实习生的述职报告
2019/09/29 职场文书
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript
新的CSS 伪类函数 :is() 和 :where()示例详解
2022/08/05 HTML / CSS