原文: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相关推荐

  1. Pytest测试用例之setup与teardown方法(二)

    续 日常积累 | 初识Pytest  | 日常积累 | 初识pytest (二) | Pytest测试用例之setup与teardown方法(一)继续分享, 今天继模块级以及函数式setup与tear ...

  2. 九、Pytest框架 — Pytest框架的setUp()和tearDown()函数

    ###文章内容有配套的学习视频和笔记都放在了文章末尾### 1.setUp()和tearDown()函数介绍 之前学过Unittest测试框架,知道前置setup()函数和后置teardown()函数 ...

  3. Pytest测试框架中,setup和teardown函数的作用及使用方法

    作为一名Python开发人员,您一定知道Pytest是一个广泛使用的Python测试框架. 它具有易用性和灵活性,可以帮助您快速编写测试用例,并且能够支持包括单元测试.集成测试.功能测试等多种测试类型 ...

  4. pytest中前置setup和后置teardown的使用方法

    前言 学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用例开始前和结束后都去执行一次. 当然还有更高级一点的setupClass和teardownClass,需 ...

  5. python pytest setupclass_简单了解pytest测试框架setup和tearDown

    pytest的setup与teardown 1)pytest提供了两套互相独立的setup 与 teardown和一对相对自由的setup与teardown 2)模块级与函数级 模块级(setup_m ...

  6. 第六:Pytest中的setup/teardown

    简介 学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用例开始前和结束后都去执行一次. 当然还有更高级一点的setupClass和teardownClass,需 ...

  7. Pytest测试用例之setup与teardown方法(一)

    学过unittest框架的大家都知道里面 [前置/后置setup/teardown ]非常好,用来写一些每个case执行前都需要执行的公用代码 [ 作用:在每次用例开始前和结束后都去执行一次 例如我们 ...

  8. pytest(四)--测试用例setup和teardown

    https://www.cnblogs.com/canglongdao/p/13395716.html 前言 学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用 ...

  9. Python Pytest中fixture之yield唤醒teardown和终结函数addfinalizer

    引入 我们之前学习的都是测试用例的前置固件,也就是相当于"setup".说到这,细心的你可能想到了,那有没有什么方式可以表示出"teardown"?这就是我们今 ...

最新文章

  1. ASP.NET MVC 学习6、学习使用Code First Migrations功能,把Model的更新同步到DB中
  2. 来吧!我教你画真正的流程图
  3. C#中的接口 (转自吕振宇老师的blog)
  4. Linux学习第二步(Java环境安装)
  5. SAP Spartacus layoutSlots ID 和 CMSComponent 的映射关系
  6. Java应用程序上的Twitter API
  7. 中信银行就泄露池子个人信息致歉,网友:违法行为想靠道歉就完事?
  8. 优化理论11---- Zoutendijk可行方向法、非线性约束情形、ε起作用约束可行方向法、Frank-Wolfe 方法
  9. EXCEL IFS函数的使用
  10. 苹果怎么应用分身_苹果ios/安卓微信双开技巧
  11. searchbar.wxss源代码
  12. birthday日期类型转化
  13. java单例模式的应用场景_java项目中单列模式适用于什么场景?
  14. 单片机低功耗配置及注意事项
  15. openFlow入门
  16. linux 自定义欢迎界面 /etc/motd文件
  17. 什么是recovery time和removal time?
  18. Django实战—— Web可视化漏洞扫描器
  19. 8051单片机的串行通信
  20. ubuntu开机没有ens33解决方法

热门文章

  1. 前端 HTML 常用标签 head标签相关内容 script标签
  2. android 调试技巧
  3. 《Java程序设计》学期总结
  4. 基础总结篇之中的一个:Activity生命周期
  5. VS2005中ReportViewer 本地模式下报表呈现 入门示例
  6. Feign接口 多线程问题
  7. elk docker
  8. [转载]使用.net 2003中的ngen.exe编译.net程序
  9. 32位JDK和64位JDK
  10. Python数据结构之四——set(集合)