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 相关文章推荐
使用python3.5仿微软记事本notepad
Jun 15 Python
Python 通过URL打开图片实例详解
Jun 01 Python
python绘制铅球的运行轨迹代码分享
Nov 14 Python
Python之Scrapy爬虫框架安装及使用详解
Nov 16 Python
Python遍历某目录下的所有文件夹与文件路径
Mar 15 Python
python中pylint使用方法(pylint代码检查)
Apr 06 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 Python
python实现合并多个list及合并多个django QuerySet的方法示例
Jun 11 Python
python版DDOS攻击脚本
Jun 12 Python
利用Python脚本实现自动刷网课
Feb 03 Python
django orm模块中的 is_delete用法
May 20 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
Terran历史背景
2020/03/14 星际争霸
SONY SRF-40W电路分析
2021/03/02 无线电
PHP持久连接mysql_pconnect()函数使用介绍
2012/02/05 PHP
php 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
php导入大量数据到mysql性能优化技巧
2014/12/29 PHP
Yii框架上传图片用法总结
2016/03/28 PHP
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
基于jquery的页面划词搜索JS
2010/09/14 Javascript
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
13 个JavaScript 性能提升技巧分享
2012/07/26 Javascript
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
eclipse导入jquery包后报错的解决方法
2014/02/17 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
js实现跟随鼠标移动且带关闭功能的图片广告实例
2015/02/26 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
JavaScript设计模式之代理模式简单实例教程
2018/07/03 Javascript
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
2018/08/17 Javascript
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
python跳出双层for循环的解决方法
2019/06/24 Python
CSS3使用border-radius属性制作圆角
2014/12/22 HTML / CSS
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
几个人围成一圈的问题
2013/09/26 面试题
幼师自我鉴定范文
2013/10/01 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
民政局个人整改措施
2014/09/24 职场文书
群众路线班子对照检查材料
2014/09/25 职场文书
2014年高数考试作弊检讨书
2014/12/14 职场文书
学风建设主题班会
2015/08/17 职场文书
Python max函数中key的用法及原理解析
2021/06/26 Python
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android