unittest---unittest简单介绍
说起python的单元测试,第一反应肯定就会是unittest,unittest作为python的标准库,很优秀,也被广泛的用到各个项目,但是你们知道吗?python的单元测试并不只有这一个,还有个pytest。和nose,后面我们主要通过unittest+python完成我们的自动化框架
unittest介绍
unittest单元测试框架最早受到junit(junit是java的单元测试,)的启发,和其他语言的主流单元测试框架有很相似的地方,他支持测试自动化,多个用例共享前置和清理代码,聚合多个测试用例到测试集中,并将测试和报告框架独立
官方文档:https://docs.python.org/2/library/unittest.html
unittest方法
1、TestCase(测试用例):所有的测试用例的基类,一个test case 包括正常执行的用例,其中包括setup(用例的开始),tearDown(用例的结束),以及run(用例的执行器)。
2、TestSuite(测试套件):多个测试用例的组合就是测试套件,TestSuite可以嵌套TestSuite。
3、TestLoder:是用来加载 TestCase到TestSuite中,其中有几个loadTestsFrom_()方法,就是从各个地方寻找TestCase,创建他们的实例,然后add到TestSuite中,再返回一个TestSuite实例
4、TextTestRunner:是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。
5、TextTestResult:测试结果会保存到TextTestResult实例中,包括运行了多少用例,成功与失败多少等信息;
6、TestFixture:一个测试用例的初始化准备及环境还原,主要是setUp() 和 setDown()方法;
unittest使用方法
对于一些方法的使用,必须要先看一遍源码,源码上写的很清楚的
import unittest
class IntegerArithmeticTestCase(unittest.TestCase):
def testAdd(self): # test method names begin with 'test' # 测试用例的名称要以test开头
self.assertEqual((1 + 2), 3)
self.assertEqual(0 + 1, 1)
def testMultiply(self):
self.assertEqual((0 * 10), 0)
self.assertEqual((5 * 8), 40)
if __name__ == '__main__':
unittest.main()
上面的源码中通过继承unittest.TestCase来创建一个测试用例,在这个类中,方法定位都是已test的前缀开头(当然也可以自己进行修改,这个要更改源码,安静后面进行补充),测试框架将它作为独立的测试去执行,每条用例中也都通过assert的方法进行去断言
前置和后置
1、setUp:在写测试用例的时候,这个就是执行用例的前置条件。
2、tearDown:执行完用例后,为了不影响下一次用例的执行,一般有个数据还原的过程,这就是执行用例的后置条件。
3、前置和后置都是非必要的条件,如果没有也可以写pass,也可以不写
5、setUpClass():必须使用@classmethod 装饰器,所有case运行前只运行一次
6、tearDownClass():必须使用@classmethod装饰器,所有case运行完后只运行一次
说了这么多,我们动手试试。
# coding:utf-8
import unittest class Test(unittest.TestCase):
def setUp(self):
print('这是用例的前置') def tearDown(self):
print('这是用例的后置') def test01(self):
print('这是第一条用例') def test02(self):
print('这是第二条用例') def test03(self):
print('这是第三条用例') if __name__ == '__main__':
unittest.main()

发现每执行一条用例,先执行的前置条件,然后执行用例内容,最后执行后置的条件。
Ran 3 tests in 0.001s 表示执行了3条用例公用了0.01S的时间
可能我们遇到一些用例,只需要执行1次前置和后置,那么我们可以通过添加装饰器进行执行一次前置
装饰器源码:
class classmethod(object):
"""
classmethod(函数)- >方法
将函数转换为类方法。
类方法接收类作为隐式的第一个参数,
就像实例方法接收实例一样。
要声明类方法,请使用以下习语:
丙级:
@classmethod
定义f(cls, arg1, arg2,…):
…
它可以在类(例如C.f())上调用,也可以在实例上调用
(例如C () .f ())。除了类之外,实例将被忽略。
如果为派生类调用类方法,则为派生类
对象作为隐含的第一个参数传递。
类方法与c++或Java静态方法不同。
如果您想要这些,请参阅staticmethod builtin。
"""
def __get__(self, *args, **kwargs): # real signature unknown
""" Return an attribute of instance, which is of type owner. """
pass def __init__(self, function): # real signature unknown; restored from __doc__
pass @staticmethod # known case of __new__
def __new__(*args, **kwargs): # real signature unknown
""" Create and return a new object. See help(type) for accurate signature. """
pass __func__ = property(lambda self: object(), lambda self, v: None, lambda self: None) # default __isabstractmethod__ = property(lambda self: object(), lambda self, v: None, lambda self: None) # default __dict__ = None # (!) real value is ''
代码操作
# coding:utf-8
import unittest class Test(unittest.TestCase):
@classmethod
def setUpClass(self):
print('这是用例的前置')
@classmethod
def tearDownClass(self):
print('这是用例的后置') def test01(self):
print('这是第一条用例') def test02(self):
print('这是第二条用例') def test03(self):
print('这是第三条用例') if __name__ == '__main__':
unittest.main()
执行结果
发现只执行了一次前置和一次后置。

unittest作为python标准库提供的单元测试,使用简单,功能强大,日常测试需求均可以满足,但是unittest的强大的功能不单单只有这么多,具体什么功能,后面一一为大家写出来,如果又不足的地方也可以提出来,安静进行修改。
感觉安静写的对您有帮助的话,可以点个关注,持续更新。哪里写的有问题或者不懂的可以留言,看到后第一时间回复
unittest---unittest简单介绍的更多相关文章
- unittest单元测试简单介绍
unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...
- Python+selenium之简单介绍unittest单元测试框架
Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...
- Python+Selenium框架设计篇之-简单介绍unittest单元测试框架
前面文章已经简单介绍了一些关于自动化测试框架的介绍,知道了什么是自动化测试框架,主要有哪些特点,基本组成部分等.在继续介绍框架设计之前,我们先来学习一个工具,叫unittest. unit ...
- unittest基本原理及介绍
unittest基本原理: unittest是python自带的测试框架,还有一个框架是:pytest,这里简单介绍下unittest模块的简单应用 unittest是python的标准测试库,相比于 ...
- Python常用的库简单介绍一下
Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable ...
- [原创]关于mybatis中一级缓存和二级缓存的简单介绍
关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存: MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来,当下次查询的时候 ...
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍
一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...
- 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍
一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...
- yii2的权限管理系统RBAC简单介绍
这里有几个概念 权限: 指用户是否可以执行哪些操作,如:编辑.发布.查看回帖 角色 比如:VIP用户组, 高级会员组,中级会员组,初级会员组 VIP用户组:发帖.回帖.删帖.浏览权限 高级会员组:发帖 ...
- angular1.x的简单介绍(二)
首先还是要强调一下DI,DI(Denpendency Injection)伸手获得,主要解决模块间的耦合关系.那么模块是又什么组成的呢?在我看来,模块的最小单位是类,多个类的组合就是模块.关于在根模块 ...
随机推荐
- docker-compose部署
一.部署compose docker compose可以方便我们快捷高效地管理容器的启动.停止.重启等操作,它类似于linux下的shell脚本,基于yaml语法,在该文件里我们可以描述应用的架构,比 ...
- 在Linux系统下制作系统启动盘(Ubuntu Linux)
在Linux系统下制作系统启动盘有两种方法: 1.用dd命令 2.用Linux自带的图形界面工具 Startup Disk Creator 本教程使用第2种方式,用Linux自带的图形界面工具制作系统 ...
- C# WPF实用的注册窗体
时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...
- ActiveMQ消息队列从入门到实践(4)—使用Spring JMS收发消息
Java消息服务(Java Message Service ,JMS)是一个Java标准,定义了使用消息代理的通用API .在JMS出现之前,每个消息代理都有私有的API,这就使得不同代理之间的消息代 ...
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Linux
如果想体验Linux环境下开发.NET Core应用,我们有多种选择.一种就是在一台物理机上安装原生的Linux,我们可以根据自身的喜好选择某种Linux Distribution,目前来说像RHEL ...
- idea创建Maven版的ssm项目
要使用idea创建一个maven项目,首先电脑安装maven,maven下载地址:http://maven.apache.org/download.cgi 1.打开idea,选择创建一个新项目,选择m ...
- Nginx入门简介和反向代理、负载均衡、动静分离理解
场景 Nginx简介 Nginx ("engine x")是一个高性能的 HTTP 和反向代理服务器 特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页 ...
- SpringCloud-使用路由网关的服务过滤功能-拦截登录前是否有token为例
场景 SpringCloud-使用路由网关统一访问接口(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102733 ...
- 使用Git出现以下错误"Git@github.com: Permission denied (publickey). Could not read from remote repository."解决方案
转载于:https://blog.csdn.net/dotphoenix/article/details/100130424 git@github.com: Permission denied (pu ...
- 看懂 游戏《Minecraft》的崩溃报告 服务端/客户端
如何看懂Minecraft报错的关键信息. 让你如何看懂Minecraft报错 前言 一些俏皮话 寻找崩溃日志 打开崩溃日志 重要的事说三遍 下载文本编辑器 开始分析 深度分析 得出结论 修复报错 解 ...