Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python unittest初始化固件setUp和销毁固件tearDown详解

Python unittest初始化固件setUp和销毁固件tearDown详解

作者头像
王大力测试进阶之路
发布于 2019-10-25 11:15:11
发布于 2019-10-25 11:15:11
4.5K00
代码可运行
举报
文章被收录于专栏:橙子探索测试橙子探索测试
运行总次数:0
代码可运行

unittest.TestCase 包含了 setUp() 和 tearDown() 两个方法,其中 setUp() 方法用于初始化测试固件;而 tearDown() 方法用于销毁测试固件。程序会在运行每个测试用例(以 test_ 开头的方法)之前自动执行 setUp() 方法来初始化测试固件,在每个测试用例(以 test_ 开头的方法)运行完成之后自动执行 tearDown() 方法来销毁测试固件。

setUp()和tearDown()函数

setUp()函数是在众多函数或说是在一个类里最先被调用的函数,每执行完一个函数都要从setUp()调用开始后再执行下一个函数,有几个函数几次,与位置无关,随便放在那里都是他先被调用。

tearDown()函数是在众多函数执行完后他才被执行,不管这个类里面有多少函数,他总是最后一个被执行,与位置无关,放在那里都行,最后不管测试函数是否执行成功都执行tearDown()方法;如果setUp()方法失败,则认为这个测试项目失败,不会执行测试函数也不执行tearDown()方法。

1、setUp()和tearDown()方法都是非必要条件,如果没有也可以写pass

2、setUp()和tearDown()方法每个测试用例都会执行,先执行前置setUp,然后执行的用例(test*),最后执行的后置tearDown

3、setUp():setUp()方法用于测试用例执行前初始化工作。如测试用例中需要访问数据库,可以在setUp中建立数据库连接并进行初始化。如测试用例需要登录web,可以先实例化浏览器

4、tearDown():tearDown()方法用于测试用例执行之后的善后工作。如关闭数据库连接、关闭浏览器

unittest 在运行每个测试用例(以 test_ 开头的方法)之前都执行了 setUp() 方法,在每个测试用例(以 test_ 开头的方法)运行完成之后都执行了 tearDown() 方法,setUp() 方法和tearDown() 方法执行多次

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

#!/usr/bin/env python
# _*_coding:utf-8_*_
import unittest
class Test(unittest.TestCase):
    def setUp(self):
        print("执行setUp初始化固件")
    def tearDown(self):
        print("调用tearDown销毁固件")
    def test_001_a(self):
        print("this is test_001_a用例")
    def test_002_b(self):
        print("this is test_002_b用例")
    def test_003_a(self):
        print("this is test_003_a用例")
    def login(self):
        print("this is login用例")
if __name__ == '__main__':
    unittest.main()


"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test02.py
...
执行setUp初始化固件
this is test_001_a用例
----------------------------------------------------------------------
调用tearDown销毁固件
Ran 3 tests in 0.000s
执行setUp初始化固件

this is test_002_b用例
OK
调用tearDown销毁固件
执行setUp初始化固件
this is test_003_a用例
调用tearDown销毁固件

Process finished with exit code 0

setUpClass() 方法和tearDownClass()前加了@classmethod, unittest 在运行(以 test_ 开头的方法)测试用例之前执行setUpClass() 方法1次,最后运行完成(以 test_ 开头的方法)之后执行 tearDownClass() 方法1次,setUpClass() 方法和tearDownClass() 方法分别执行1次

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/env python
# _*_coding:utf-8_*_
import unittest
class Test(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print("执行setUpClass初始化固件")
    @classmethod
    def tearDownClass(cls):
        print("调用tearDownClass销毁固件")
    def test_001_a(self):
        print("this is test_001_a用例")
    def test_002_b(self):
        print("this is test_002_b用例")
    def test_003_a(self):
        print("this is test_003_a用例")
    def login(self):
        print("this is login用例")
if __name__ == '__main__':
    unittest.main()



"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test02.py
...
----------------------------------------------------------------------
Ran 3 tests in 0.000s

OK
执行setUpClass初始化固件
this is test_001_a用例
this is test_002_b用例
this is test_003_a用例
调用tearDownClass销毁固件

Process finished with exit code 0
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 橙子探索测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
unittest测试框架
unittest 是 Python 内置的单元测试框架,遵循了 XUnit 测试架构,它提供了一个标准的方式来编写和运行 Python 测试。它能够帮助开发者检查代码的正确性,发现错误,确保代码在修改后依然能正常工作。
用户3672714
2025/07/30
1450
Pytest学习(三) - setup和teardown的使用
从文章标题可以看出,就是初始化和释放的操作,根据我的java习惯来学习pytest,个人感觉没差太多,理解上也不是很难。
软件测试君
2020/10/29
9170
Pytest学习(三) - setup和teardown的使用
用python实现接口测试(八、Unittest测试框架)
不论对于开发还是测试,都离不开单元测试框架,对于开发而言使用单元测试框架,可以编写测试代码来验证验证自己编写的功能是否正确,对于测试而言,使用单元测试框架,可以编写自动化的测试用例,在Python中单元测试框架是Pyunit,即unittest,unittest我一直认为是一个很优秀的单元测试框架。
用户6367961
2019/09/29
6060
Python单元测试框架unittest使用全解析(文末赠书)
unittest是Python语言自带的单元测试框架,不仅适用于单元测试,还可以适用于web自动化测试,提供了很多断言方法,可以组织执行测试用例,生成测试结果等。
吾非同
2021/11/16
1.5K0
Python单元测试框架unittest使用全解析(文末赠书)
Python 测试框架之 Unittest & Pytest
安装Pytest: 1、 使用命令:pip install pytest 2、 在Pycharm编译器里的配置中添加,如下截图所示
Wu_Candy
2022/07/04
4610
Python 测试框架之 Unittest & Pytest
unittest简单应用
以上代码可以看到setUpclass在类方法被调用前首先执行,且只执行一次;tearDownClass最后执行,也执行一次;setUp在每个case执行前执行,tearDown在每个case执行后执行
muntainyang
2020/10/23
4910
Python 自动化测试框架unittest与pytest的区别
  前面一篇文章Python单元测试框架介绍已经介绍了python单元测试框架,大家平时经常使用的是unittest,因为它比较基础,并且可以进行二次开发,如果你的开发水平很高,集成开发自动化测试平台也是可以的。而这篇文章主要讲unittest与pytest的区别,pytest相对unittest而言,代码简洁,使用便捷灵活,并且插件很丰富。
全栈测试开发日记
2023/02/02
1.7K0
Python 自动化测试框架unittest与pytest的区别
UI自动化unittest框架之装饰器@classmethod
前言:unittest框架大家应该很熟悉,unittest里面setUp可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,就是我们每执行一条用例,就会打开一次浏览器;缺点:操作繁琐、耗时长、易报错。
测试小兵
2019/11/20
8990
UI自动化unittest框架之装饰器@classmethod
Selenium2+python自动化55-unittest之装饰器(@classmethod)
前言 前面讲到unittest里面setUp可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,比如打开浏览器操作,每次执行用例时候都会重新打开,这样就会浪费很多时间。 于是就想是不是可以只打开一次浏览器,执行完用例再关闭呢?这就需要用到装饰器(@classmethod)来解决了。 一、装饰器 1.用setUp与setUpClass区别 setup():每个测试case运行前运行 teardown():每个测试case运行完后执行 setUpClass():必须使用@classmethod 装饰
上海-悠悠
2018/04/08
9610
单元测试|Unittest setup前置初始化和teardown后置操作
Unittest setup前置初始化和teardown后置操作针对类中每个函数执行时进行前置后置的操作 setUp(self):测试前的初始化操作tearDown(self):测试后的操作代码示例:import unittest # 导入unittest模块class test_case(unittest.TestCase): # 集成TestCase类 def setUp(self): print("我是setUp方法,进行测试前的初始化工作") def tearDown(
霍格沃兹测试开发Muller老师
2023/02/02
5060
python之Unittest单元测试框架
unittest是一个python版本的junit,junit是java中的单元测试框架,对java的单元测试,有一句话很贴切:Keep the bar green,相信使用eclipse写过java单元测试的都心领神会。unittest实现了很多junit中的概念,作为标准python中的一个模块,是其它框架和工具的基础,参考资料是它的官方文档:http://docs.python.org/2.7/library/unittest.html和源代码,比如我们非常熟悉的test case, test suite等,总之,原理都是相通的,只是用不同的语言表达出来。
用户6367961
2019/09/29
1.1K0
pytest测试框架和unittest_python性能测试框架
单元测试是开发者编写的一小段代码,用于经验被测代码的一个很小的,很明确的功能是否正确,通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。
全栈程序员站长
2022/11/04
7510
unittest自动化测试框架_unittest批量加载用例
测试框架-unittest,相当于是一个 python 版的 junit。python 里面的单元测试框架除了 unittest,还有一个 pytest 框架,这个实际上用的比较少,后面有空再继续介绍和分享。unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测
全栈程序员站长
2022/11/04
9160
python接口自动化测试 - unittest框架基本使用
这是比较常见的断言方式,当然还有一些比较容易理解的断言方式就没有一一举例啦,具体可以看看下面列表
小菠萝测试笔记
2020/06/09
6860
web自动化测试实战之批量执行测试用例
本文参考Python自动化测试实战(作者:无涯)+网上教程+小编实战操练,感谢前人的教程学学他人的知识点,一步一步变为自己的知识点,也可以从中衍生新的测试思想与方法.
测试小兵
2020/06/04
7460
unittest框架核心要素及应用
1. unittest核心要素 unittest介绍 测试框架,不仅仅用于单元测试 python自动的测试包 用法和django.test.TestCase类似 1.1【知道】unittest介绍和核心要素 image.png 1.2【掌握】unittest核心要素的使用 """ 1. 测试用例 2. 容器,容器添加测试用例 3. 运行容器中的测试用例 """ import unittest ​ # 测试类,继承于unittest.TestCase class MyTest(unittest.TestC
用户1880875
2021/08/26
5260
【自动化测试】Python - uni
用Python搭建自动化测试框架,需要组织用例以及测试执行,大部分推荐的是unittest。现在用的也是这个,随着了解,也有其他的框架,有时间再多去学习,保持持续学习哦~ 附上官方文档地址:链接描述 https://docs.python.org/2.7/l...
py3study
2020/01/02
5000
UnitTest测试框架全栈详解
从软件架构的⻆度来说,测试最重要的步骤是在软件开发的时候界入比较好,所以在早期测试的界入,从软件经济学的⻆度上来说,发现的问题解决成本低,投入的资源比较少。因此,对一个测试的系统,开始最佳的测试就是源代码级别的测试,也就是单元测试阶段,这个过程也被成为白盒测试。单元测试是最基本也是最底层的测试类型,单元测试应用于最基本的软件代码,如类,函数。方法等,单元测试通过可执行的断言检查被测单元的输出是否满足预期结果。在测试金字塔的理论上来说,越往下的测试投入资源越高,得到的回报率越大,⻅测试金字塔模型:
无涯WuYa
2021/11/16
7930
UnitTest测试框架全栈详解
【Python篇】unittest单元测试框架介绍及使用(一)
unitetest是python里单元测试框架,是基于 java 的 junit 测试框架 相当于是一个 python 版的 junit,除了 unittest,还有一个 pytest 框架
王大力测试进阶之路
2019/10/25
1.9K0
【Python篇】unittest单元测试框架介绍及使用(一)
Unittest测试框架基本使用[通俗易懂]
1、UintTest是python内置的单元测试框架,具备编写用例、组织用例、执行用例、输出报告等自动化框架的条件
全栈程序员站长
2022/11/04
5010
推荐阅读
相关推荐
unittest测试框架
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验