详解Python之unittest单元测试代码


Posted in Python onJanuary 24, 2018

前言

编写函数或者类时,还可以为其编写测试。通过测试,可确定代码面对各种输入都能够按要求的那样工作。

本次我将介绍如何使用Python模块unittest中的工具来测试代码。

测试函数

首先我们先编写一个简单的函数,它接受姓、名、和中间名三个参数,并返回完整的姓名:

names.py

def get_fullname(firstname,lastname,middel=''):
  '''创建全名'''
  if middel:
    full_name = firstname + ' ' + middel + ' ' + lastname
    return full_name.title()
  else:
    full_name = firstname + ' ' + lastname
    return full_name.title()

然后再当前目录下编写调用函数程序

get_name.py

from names import get_fullname

message = "Please input 'q' to quit."
print(message)

while True:
  first = input("Please input your firstname: ")
  if first == 'q':
    break
  last = input("Please input your lastname: ")
  if last == 'q':
    break
  middels = input("Please input your middel name or None: ")
  if last == 'q':
    break
  formant_name = get_fullname(first,last,middels)
  print("\tYour are fullname is: " + formant_name.title())

调用结果:

Please input 'q' to quit.
Please input your firstname: xiao
Please input your lastname: peng
Please input your middel or None:
    Your are fullname is: Xiao Peng
Please input your firstname: xiao
Please input your lastname: peng
Please input your middel or None: you
    Your are fullname is: Xiao You Peng
Please input your firstname: q

进程已结束,退出代码0

创建测试程序

创建测试用例的语法需要一段时间才能习惯,但测试用例创建后,再针对函数的单元测试就很简单了。先导入模块unittest以及要测试的函数,再创建一个继承函数unittest.TestCase的类,

并编写一系列方法对函数行为的不同方便进行测试。

下面介绍测试上面names.py函数是否能够正确的获取姓名:

Test_get_name.py

import unittest
from names import get_fullname

class NamesTestCase(unittest.TestCase):
  '''定义测试类'''
  def test_get_name2(self):
    '''测试2个字的名字'''
    formatied_name2 = get_fullname('xiao','pengyou')
    self.assertEqual(formatied_name2,'Xiao Pengyou')
  def test_get_name3(self):
    '''测试3个字的名字'''
    formatied_name3 = get_fullname('xiao','peng',middel='you')
    self.assertEqual(formatied_name3,'Xiao Peng You')
if __name__ == '__init__':
  unittest.main()

测试结果:

Ran 2 tests in 0.034s

OK

两个测试单元测试通过测试!

在当前的大目录下会生成一个测试报告,可以通过浏览器进行打开查看。

详解Python之unittest单元测试代码

由图可知,两个测试通过,并显示测试的时间!!!

unittest.TestCase的各种断言方法

unittest各种断言方法

方      法 用      途
assertEqual(a,b) 核实a == b
assertNotEqual(a,b) 核实a != b
assertTrue(x) 核实x为True
assertFalse(x) 核实x为False
assertIn(item,list) 核实item在list中
assertNotIn(item,list) 核实item不在list中

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python Property属性的2种用法
Jun 21 Python
python 字符串转列表 list 出现\ufeff的解决方法
Jun 22 Python
解决python文件字符串转列表时遇到空行的问题
Jul 09 Python
Python利用pandas计算多个CSV文件数据值的实例
Apr 19 Python
用python实现刷点击率的示例代码
Feb 21 Python
elasticsearch python 查询的两种方法
Aug 04 Python
python global关键字的用法详解
Sep 05 Python
wxPython+Matplotlib绘制折线图表
Nov 19 Python
Python和Sublime整合过程图示
Dec 25 Python
Python3 搭建Qt5 环境的方法示例
Jul 16 Python
python 无损批量压缩图片(支持保留图片信息)的示例
Sep 22 Python
python爬虫框架feapde的使用简介
Apr 20 Python
python爬取拉勾网职位数据的方法
Jan 24 #Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 #Python
Python实现的生成格雷码功能示例
Jan 24 #Python
Python使用requests及BeautifulSoup构建爬虫实例代码
Jan 24 #Python
Python3结合Dlib实现人脸识别和剪切
Jan 24 #Python
深入浅析Python中的yield关键字
Jan 24 #Python
Python3.6安装及引入Requests库的实现方法
Jan 24 #Python
You might like
PHP集成FCK的函数代码
2008/09/27 PHP
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
php工具型代码之印章抠图
2018/07/18 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
2016/10/12 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
bootstrap输入框组件使用方法详解
2017/01/19 Javascript
jQuery获取复选框选中的当前行的某个字段的值
2017/09/15 jQuery
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
JavaScript模板引擎原理与用法详解
2018/12/24 Javascript
微信小程序按顺序同步执行的两种方式
2019/12/20 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
Python内置函数delattr的具体用法
2017/11/23 Python
Python操作Redis之设置key的过期时间实例代码
2018/01/25 Python
解决pyinstaller打包pyqt5的问题
2019/01/08 Python
详解pandas数据合并与重塑(pd.concat篇)
2019/07/09 Python
python找出因数与质因数的方法
2019/07/25 Python
深入理解Python 多线程
2020/06/16 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
Python plt 利用subplot 实现在一张画布同时画多张图
2021/02/26 Python
日本7net购物网:书籍、漫画、杂志、DVD、游戏邮购
2017/02/17 全球购物
毕业生的自我鉴定
2013/10/29 职场文书
门卫岗位安全职责
2013/12/13 职场文书
大学生职业生涯规划范文
2013/12/31 职场文书
房产继承公证书
2014/04/09 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
大学生军训心得体会5篇
2019/08/15 职场文书
nginx容器方式反向代理实战
2022/04/18 Servers
NASA 机智号火星直升机拍到了毅力号设备碎片
2022/04/29 数码科技