详解Python之unittest单元测试代码
作者:JeremyWYL 发布时间:2022-04-15 02:28:12
前言
编写函数或者类时,还可以为其编写测试。通过测试,可确定代码面对各种输入都能够按要求的那样工作。
本次我将介绍如何使用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.
进程已结束,退出代码0
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
创建测试程序
创建测试用例的语法需要一段时间才能习惯,但测试用例创建后,再针对函数的单元测试就很简单了。先导入模块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
两个测试单元测试通过测试!
在当前的大目录下会生成一个测试报告,可以通过浏览器进行打开查看。
由图可知,两个测试通过,并显示测试的时间!!!
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中 |
来源:http://www.cnblogs.com/JeremyWYL/p/8340316.html
猜你喜欢
- 本文实例讲述了php+mysqli使用面向对象方式更新数据库的方法,分享给大家供大家参考。具体实现方法如下:<?php//第一步:创建
- 一 前言pandas学到分组迭代,那么基础的pandas系列就学的差不多了,自我感觉不错,知识追寻者用pandas处理过一些数据,蛮好用的;
- 需要默认选中时,定义一个变量 var cityId=城市id 下面是js代码 function readxml() { var XmlDoc
- 赋值:其实就是对象的引用(相当于取别名)。浅拷贝(copy):拷贝父对象,不会拷贝对象内部的子对象,会引用子对象。深拷贝(deepcopy)
- 看代码:Vue提供了强大的前端开发架构,很多时候我们需要判断数据对象是否为空,使用typeof判断是个不错选择,具体代码见图。补充知识:vu
- 随着现在宽屏显示器的流行,Flash的全屏模式下,越来越需要考虑到普屏显示器与宽屏显示器的差别。Flash全屏模式有以下特点:窗口最大化,且
- 在关闭mysql server的时候,可能会由于关闭的方式而出现各种问题。下面的一些步骤,可以减少问题的发生。1.停止复制在一些特殊环境下,
- 创建小程序全局函数1:在微信开发工具中增加一个JS文档, 放入全局全局函数代码说明1:全局函数只能放var定义的变量下,本例的var 变量为
- 最近为数据库服务器增加了内存,达到了最大支持的8G,数据库用的是mssql 2005 ,之前内存一直是4G的,不存在内存大和32位操作系统冲
- 当我们拿到一个对象的引用时,如何知道这个对象是什么类型、有哪些方法呢?使用type()首先,我们来判断对象类型,使用type()函数:基本类
- 本文实例讲述了Python基于ThreadingTCPServer创建多线程代理的方法。分享给大家供大家参考,具体如下:#coding=ut
- 一、采用?a=1&b=2访问修改views.py:views.pyfrom django.shortcuts import rend
- 最近在工作中,遇到了数据合并、连接的问题,故整理如下,供需要者参考~一、concat:沿着一条轴,将多个对象堆叠到一起concat方法相当于
- 常用php函数实现及介绍countcount是我们经常用到的一个函数,其功能是返回一个数组的长度。count这个函数,其复杂度是多少呢? 一
- JS中作用域的概念: 表示变量或函数起作用的区域,指代了它们在什么样的上下文中执行,亦即上下文执行环境。Javascript的作用域只有两种
- anaconda中安装的python环境中没有pip3在使用anaconda配置的python环境时,发现在python环境中并没有安装pi
- 在这篇文章里,我们将会探索如何使用Python语言作为一个工具来检测Linux系统各种运行信息。让我们一起来学习吧。哪种Python?当我提
- 本文实例为大家分享了Python smtplib发送邮件功能的具体代码,供大家参考,具体内容如下解决之前版本的问题,下面为最新版#!/usr
- Python获取图片的大小了解过Pillow的都知道,Pillow是一个非常强大的图片处理器,这篇文章主要记录一下Pillow对图片信息的获
- logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等。其主