之前我写的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 x def test_02():
print "正在执行test2"
x = "hello"
assert hasattr(x,"hello") def add(a,b):
return a+b def test_add():
print "正在执行test_add()"
assert add(3,4) == 7 if __name__=="__main__":
pytest.main(["-s","test_function.py"]) 运行结果为:(-s为了显示用例的打印信息 -q只显示结果不显示过程)
可以看出执行的结果是:
setup_function--》 test_01 --》teardown_function
setup_function--》 test_02 --》teardown_function
setup_function--》 test_add --》teardown_function

二、类级的(setup_class、teardown_class)在类中使用,类执行之前运行一次,类执行之后运行一次

#!/usr/bin/env/python
# -*-coding:utf-8-*- """
在类之前和之后执行一次
setup_class
teardown_class
""" import pytest class 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+b def test_01(self):
print "正在执行test1"
x = "this"
assert 'h' in x def 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 pytest class 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+b def test_01(self):
print "正在执行test1"
x = "this"
assert 'h' in x def 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 x def add(a,b):
return a+b def 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 pytest 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_10():
print "正在执行test1"
x = "this"
assert 'h' in x def add0(a,b):
return a+b def test_add():
print "正在执行test_add()"
assert add0(3,4) == 7 class 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+b def test_01(self):
print "正在执行test1"
x = "this"
assert 'h' in x def test_add(self):
print "正在执行test_add()"
assert self.add(3, 4) == 7 if __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

												

pytest 2.测试用例setup和teardown的更多相关文章

  1. pytest自动化2:测试用例setup和teardown

    前言: pytest支持函数和类两种用例方式,针对每种情况都有不同的代码 pytest用例运行级别 模块级(setup_module/teardown_module)开始于模块始末,全局的 函数级(s ...

  2. pytest_04_测试用例setup和teardown

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

  3. python:pytest中的setup和teardown

    原文:https://www.cnblogs.com/peiminer/p/9376352.html 之前我写的unittest的setup和teardown,还有setupClass和teardow ...

  4. pytest测试框架 -- setup和teardown等

    一.用例运行级别 1.函数级别(setup.teardown 或 setup_function.teardown_function): 仅对处于同作用域的测试函数有效(该函数定义不在类中,则对非类中测 ...

  5. pytest二:setup和teardown

    用例运行级别 模块级(setup_module/teardown_module)开始于模块始末,全局的 函数级(setup_function/teardown_function)只对函数用例生效(不在 ...

  6. pytest用例setup和teardown

    函数式以下两种: setup_function/teardown_function  每个用例开始和结束调用一次 setup_module/teardown_module     setup_modu ...

  7. 【pytest】(十二)参数化测试用例中的setup和teardown要怎么写?

    还是一篇关于pytest的fixture在实际使用场景的分享. fixture我用来最多的就是写setup跟teardown了,那么现在有一个用例是测试一个列表接口,参数化了不同的状态值传参,来进行测 ...

  8. python单元测试框架pytest——fixture函数(类似unitest的setup和teardown)

    pytest的setup和teardown函数(曾被一家云计算面试官问到过). pytest提供了fixture函数用以在测试执行前和执行后进行必要的准备和清理工作.与python自带的unitest ...

  9. Pytest学习(三) - setup和teardown的使用

    一.前言 从文章标题可以看出,就是初始化和释放的操作,根据我的java习惯来学习pytest,个人感觉没差太多,理解上也不是很难. 哦,对了,差点跑题了,这个框架是基于Python语言的,在学习的时候 ...

随机推荐

  1. 莫烦theano学习自修第十天【保存神经网络及加载神经网络】

    1. 为何保存神经网络 保存神经网络指的是保存神经网络的权重W及偏置b,权重W,和偏置b本身是一个列表,将这两个列表的值写到列表或者字典的数据结构中,使用pickle的数据结构将列表或者字典写入到文件 ...

  2. 导出数据到EXL表格中

    项目使用的是SSI框架,通过struts访问到action xml文件: <action name="fabAttributedaochu" class="com. ...

  3. Draw your Next App Idea with Ink to Code

    Imagine that you’ve just been struck by inspiration for your next great app. You might start by jott ...

  4. SQL Server For XML

    FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...

  5. Linux成为云计算平台的主流操作系统

    导读 这是一个人人谈"云"."大数据"的时代,作为一个IT民工,如果与同行间聊天时,不谈及这方面的内容,有人可能会觉得你落伍了,跟不上这个时代了. 这是一个人人 ...

  6. HDU4035 Maze 【树形DP】【期望DP】

    题目分析: 以前一直不会这个方法, 我好菜啊. 转移分为三个部分,一个是直接成功,一个是转移到E1,还有一个是转移到自己周围的一圈儿点. 如果是叶子那么只能转移到父亲,如果不是叶子可以把非叶子的转移代 ...

  7. bzoj 3673 可持久化并查集 by zky

    Description n个集合 m个操作操作:1 a b 合并a,b所在集合2 k 回到第k次操作之后的状态(查询算作操作)3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 0<n ...

  8. 安装 xadmin 报错: Command "python setup.py egg_info" failed with error code 1 in C:\Users\Python\AppData\Local\Temp\pip-install-1k1byg0p\xadmin\

    报错详情 安装 xadmin 组件的时候报错 不论是命令行还是 pycharm 方式都不行 分析报错 按照报错提示是说 README.rst 文件的编码问题导致. 解决报错 通过 github 下载源 ...

  9. MT【280】最小值函数

    已知正系数二次函数$ax^2+bx+c=0$有实数根,证明:$\min\{a,b,c\}\le\dfrac{a+b+c}{4}$ 证明:$\min\{a,b,c\}=\dfrac{a+c-|a-c|+ ...

  10. Codeforces Round #539 Div1 题解

    Codeforces Round #539 Div1 题解 听说这场很适合上分QwQ 然而太晚了QaQ A. Sasha and a Bit of Relax 翻译 有一个长度为\(n\)的数组,问有 ...