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 20 Python
python with statement 进行文件操作指南
Aug 22 Python
Python 中的with关键字使用详解
Sep 11 Python
python字典DICT类型合并详解
Aug 17 Python
python监控linux内存并写入mongodb(推荐)
Sep 11 Python
python配置grpc环境
Jan 01 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
Apr 26 Python
详解如何管理多个Python版本和虚拟环境
May 10 Python
Django中URL的参数传递的实现
Aug 04 Python
python:动态路由的Flask程序代码
Nov 22 Python
基于Python采集爬取微信公众号历史数据
Nov 27 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
Apr 08 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中一个有意思的日期逻辑处理
2012/03/25 PHP
php中DOMElement操作xml文档实例演示
2013/03/26 PHP
php实现带读写分离功能的MySQL类完整实例
2016/07/28 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
phpmyadmin在宝塔面板里进不去的解决方案
2020/07/06 PHP
JavaScript截断字符串的方法
2015/07/15 Javascript
JS实现支持多选的遍历下拉列表代码
2015/08/20 Javascript
微信小程序学习(4)-系统配置app.json详解
2017/01/12 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
VUEX采坑之路之获取不到$store的解决方法
2019/11/08 Javascript
微信小程序如何实现精确的日期时间选择器
2020/01/21 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
微信小程序实现点击生成随机验证码
2020/09/09 Javascript
如何管理Vue中的缓存页面
2021/02/06 Vue.js
Python读取Excel的方法实例分析
2015/07/11 Python
尝试用最短的Python代码来实现服务器和代理服务器
2016/06/23 Python
python使用SMTP发送qq或sina邮件
2017/10/21 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
Python3.5装饰器典型案例分析
2019/04/30 Python
基于python解线性矩阵方程(numpy中的matrix类)
2019/10/21 Python
Python 实现OpenCV格式和PIL.Image格式互转
2020/01/09 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
2020/03/09 Python
Django自定义YamlField实现过程解析
2020/11/11 Python
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
加拿大领先的时尚和体育零售商:Sporting Life
2019/12/15 全球购物
门卫岗位职责
2013/11/15 职场文书
家居设计专业个人自荐信范文
2013/11/26 职场文书
三年级科学教学反思
2014/01/29 职场文书
音乐教师求职信
2014/06/28 职场文书
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书
nginx如何将http访问的网站改成https访问
2021/03/31 Servers
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python