python:pytest中的setup和teardown
原文:https://www.cnblogs.com/peiminer/p/9376352.html
之前我写的unittest的setup和teardown,还有setupClass和teardownClass(需要配合@classmethod装饰器一起使用),接下来就介绍pytest的类似于这类的固件。
(1.setup_function、teardown_function 2.setup_class、teardown_class 3.setup_method、teardown_method 4.setup_module、teardown_module)
setup/teardown和unittest里面的setup/teardown是一样的功能,这里setup_method和teardown_method的功能和setup/teardown功能是一样的,优先级是先执行setup_method,在执行setup。一般二者用其中一个即可,就不详细介绍了。setup_class和teardown_class等价于unittest里面的setupClass和teardownClass
一、函数级的(setup_function、teardown_function)只对函数用例生效,而且不在类中使用
#!/usr/bin/env/python # -*-coding:utf-8-*-import pytest""" 只对函数用例生效,不在类中 setup_function teardown_function """def setup_function():print "setup_function():每个方法之前执行"def teardown_function():print "teardown_function():每个方法之后执行"def test_01():print "正在执行test1"x = "this"assert 'h' in xdef test_02():print "正在执行test2"x = "hello"assert hasattr(x,"hello")def add(a,b):return a+bdef test_add():print "正在执行test_add()"assert add(3,4) == 7if __name__=="__main__":pytest.main(["-s","test_function.py"])
运行结果为:(-s为了显示用例的打印信息 -q只显示结果不显示过程)可以看出执行的结果是:setup_function--》 test_01 --》teardown_functionsetup_function--》 test_02 --》teardown_functionsetup_function--》 test_add --》teardown_function
二、类级的(setup_class、teardown_class)在类中使用,类执行之前运行一次,类执行之后运行一次
#!/usr/bin/env/python # -*-coding:utf-8-*-""" 在类之前和之后执行一次 setup_class teardown_class """import pytestclass TestClass(object):def setup_class(self):print "setup_class(self):每个类之前执行一次"def teardown_class(self):print "teardown_class(self):每个类之后执行一次"def add(self,a,b):print "这是加法运算"return a+bdef test_01(self):print "正在执行test1"x = "this"assert 'h' in xdef test_add(self):print "正在执行test_add()"assert self.add(3, 4) == 7
执行结果:可以看出执行的顺序是 setup_class --》 test1 --》test_add()--》teardown_class
三、类中方法级的(setup_method、teardown_method)在每一个方法之前执行一次,在每一个方法之后执行一次
#!/usr/bin/env/python # -*-coding:utf-8-*-""" 开始于方法始末(在类中) setup_method teardown_method """ import pytestclass TestMethod(object):def setup_class(self):print "setup_class(self):每个类之前执行一次\n"def teardown_class(self):print "teardown_class(self):每个类之后执行一次"def setup_method(self):print "setup_method(self):在每个方法之前执行"def teardown_method(self):print "teardown_method(self):在每个方法之后执行\n"def add(self,a,b):print "这是加法运算"return a+bdef test_01(self):print "正在执行test1"x = "this"assert 'h' in xdef test_add(self):print "正在执行test_add()"assert self.add(3, 4) == 7
执行结果: setup_class --》 setup_method -->test1 -->teardown_method --》setup_method --> test_add()--》teardown_method --> teardown_class
四、模块级的(setup_module、teardown_module)全局的,在模块执行前运行一遍,在模块执行后运行一遍
#!/usr/bin/env/python # -*-coding:utf-8-*-import pytest """ 开始于模块始末,全局的 setup_module teardown_module """def setup_module():print "setup_module():在模块最之前执行\n"def teardown_module():print "teardown_module:在模块之后执行"def setup_function():print "setup_function():每个方法之前执行"def teardown_function():print "teardown_function():每个方法之后执行\n"def test_01():print "正在执行test1"x = "this"assert 'h' in xdef add(a,b):return a+bdef test_add():print "正在执行test_add()"assert add(3,4) == 7
运行结果:setup_module --> setup_function --> test_01--> teardown_function --> setup_function --> test_add()--> teardown_function --> teardown_module
五、当类和函数都有的时候
#!/usr/bin/env/python # -*-coding:utf-8-*-""" 在类之前和之后执行一次 setup_class teardown_class """import pytestdef setup_module():print "setup_module():在模块最之前执行\n"def teardown_module():print "teardown_module:在模块之后执行"def setup_function():print "setup_function():每个方法之前执行"def teardown_function():print "teardown_function():每个方法之后执行\n"def test_10():print "正在执行test1"x = "this"assert 'h' in xdef add0(a,b):return a+bdef test_add():print "正在执行test_add()"assert add0(3,4) == 7class TestClass(object):def setup_class(self):print "setup_class(self):每个类之前执行一次"def teardown_class(self):print "teardown_class(self):每个类之后执行一次"def add(self,a,b):print "这是加法运算"return a+bdef test_01(self):print "正在执行test1"x = "this"assert 'h' in xdef test_add(self):print "正在执行test_add()"assert self.add(3, 4) == 7if __name__=="__main__":pytest.main(["-s","test_class0.py"])
运行结果:可以看出来,都互不影响,setup_module还是在最之前执行,所有之后执行。setup_modele --> setup_function -->test1 -->teardown_function --> setuo_function -->test_add -->teardown_function -->setup_class -->teardown_class-->taerdown_module
转载于:https://www.cnblogs.com/gcgc/p/11513184.html
python:pytest中的setup和teardown相关推荐
- Pytest测试用例之setup与teardown方法(二)
续 日常积累 | 初识Pytest | 日常积累 | 初识pytest (二) | Pytest测试用例之setup与teardown方法(一)继续分享, 今天继模块级以及函数式setup与tear ...
- 九、Pytest框架 — Pytest框架的setUp()和tearDown()函数
###文章内容有配套的学习视频和笔记都放在了文章末尾### 1.setUp()和tearDown()函数介绍 之前学过Unittest测试框架,知道前置setup()函数和后置teardown()函数 ...
- Pytest测试框架中,setup和teardown函数的作用及使用方法
作为一名Python开发人员,您一定知道Pytest是一个广泛使用的Python测试框架. 它具有易用性和灵活性,可以帮助您快速编写测试用例,并且能够支持包括单元测试.集成测试.功能测试等多种测试类型 ...
- pytest中前置setup和后置teardown的使用方法
前言 学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用例开始前和结束后都去执行一次. 当然还有更高级一点的setupClass和teardownClass,需 ...
- python pytest setupclass_简单了解pytest测试框架setup和tearDown
pytest的setup与teardown 1)pytest提供了两套互相独立的setup 与 teardown和一对相对自由的setup与teardown 2)模块级与函数级 模块级(setup_m ...
- 第六:Pytest中的setup/teardown
简介 学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用例开始前和结束后都去执行一次. 当然还有更高级一点的setupClass和teardownClass,需 ...
- Pytest测试用例之setup与teardown方法(一)
学过unittest框架的大家都知道里面 [前置/后置setup/teardown ]非常好,用来写一些每个case执行前都需要执行的公用代码 [ 作用:在每次用例开始前和结束后都去执行一次 例如我们 ...
- pytest(四)--测试用例setup和teardown
https://www.cnblogs.com/canglongdao/p/13395716.html 前言 学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用 ...
- Python Pytest中fixture之yield唤醒teardown和终结函数addfinalizer
引入 我们之前学习的都是测试用例的前置固件,也就是相当于"setup".说到这,细心的你可能想到了,那有没有什么方式可以表示出"teardown"?这就是我们今 ...
最新文章
- ASP.NET MVC 学习6、学习使用Code First Migrations功能,把Model的更新同步到DB中
- 来吧!我教你画真正的流程图
- C#中的接口 (转自吕振宇老师的blog)
- Linux学习第二步(Java环境安装)
- SAP Spartacus layoutSlots ID 和 CMSComponent 的映射关系
- Java应用程序上的Twitter API
- 中信银行就泄露池子个人信息致歉,网友:违法行为想靠道歉就完事?
- 优化理论11---- Zoutendijk可行方向法、非线性约束情形、ε起作用约束可行方向法、Frank-Wolfe 方法
- EXCEL IFS函数的使用
- 苹果怎么应用分身_苹果ios/安卓微信双开技巧
- searchbar.wxss源代码
- birthday日期类型转化
- java单例模式的应用场景_java项目中单列模式适用于什么场景?
- 单片机低功耗配置及注意事项
- openFlow入门
- linux 自定义欢迎界面 /etc/motd文件
- 什么是recovery time和removal time?
- Django实战—— Web可视化漏洞扫描器
- 8051单片机的串行通信
- ubuntu开机没有ens33解决方法