pytest 2.测试用例setup和teardown
之前我写的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的更多相关文章
- pytest自动化2:测试用例setup和teardown
		
前言: pytest支持函数和类两种用例方式,针对每种情况都有不同的代码 pytest用例运行级别 模块级(setup_module/teardown_module)开始于模块始末,全局的 函数级(s ...
 - pytest_04_测试用例setup和teardown
		
学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用例开始前和结束后都去执行一次. 当然还有更高级一点的setupClass和teardownClass,需配合@ ...
 - python:pytest中的setup和teardown
		
原文:https://www.cnblogs.com/peiminer/p/9376352.html 之前我写的unittest的setup和teardown,还有setupClass和teardow ...
 - pytest测试框架 -- setup和teardown等
		
一.用例运行级别 1.函数级别(setup.teardown 或 setup_function.teardown_function): 仅对处于同作用域的测试函数有效(该函数定义不在类中,则对非类中测 ...
 - pytest二:setup和teardown
		
用例运行级别 模块级(setup_module/teardown_module)开始于模块始末,全局的 函数级(setup_function/teardown_function)只对函数用例生效(不在 ...
 - pytest用例setup和teardown
		
函数式以下两种: setup_function/teardown_function 每个用例开始和结束调用一次 setup_module/teardown_module setup_modu ...
 - 【pytest】(十二)参数化测试用例中的setup和teardown要怎么写?
		
还是一篇关于pytest的fixture在实际使用场景的分享. fixture我用来最多的就是写setup跟teardown了,那么现在有一个用例是测试一个列表接口,参数化了不同的状态值传参,来进行测 ...
 - python单元测试框架pytest——fixture函数(类似unitest的setup和teardown)
		
pytest的setup和teardown函数(曾被一家云计算面试官问到过). pytest提供了fixture函数用以在测试执行前和执行后进行必要的准备和清理工作.与python自带的unitest ...
 - Pytest学习(三) - setup和teardown的使用
		
一.前言 从文章标题可以看出,就是初始化和释放的操作,根据我的java习惯来学习pytest,个人感觉没差太多,理解上也不是很难. 哦,对了,差点跑题了,这个框架是基于Python语言的,在学习的时候 ...
 
随机推荐
- python学习笔记(11)--文件与数据格式化
			
文件的概念: 文件是数据的抽象和集合,是存储在辅助存储器上的数据序列,文件是数据存储的一种形式,文件的展现形态,文本文件和二进制文件. 文本文件输出: f.txt文件保存:“我是中国人” >&g ...
 - python数学第五天【常用概率分布】
			
1. 概率基本公式 思考题: 3. 两点分布 4. 二项分布 推论一: 5.柏松分布 6. 均匀分布 7. 指数分布 8. 正态分布 9.常见分布的总结
 - Yii2控制台程序最佳实践
			
模板工程标准的控制台程序要素: (1)完整明确文字提示用户(并且使用红,绿,黄三种颜色标识提示文字:红色为错误相关,绿色为成功相关,黄色为进行中提示) (2)告知用户运行进度(完成任务的一部分即显示进 ...
 - 如何在Mac系统安装MySQL
			
方法一: (1)使用brew install mysql (2)使用mysql -uroot连接时报错: Authentication plugin 'caching_sha2_password' c ...
 - hdu-3746(kmp)
			
题意:给你一个字符串,问你至少增添几个字符可以把这个字符串变成一个循环字符串(ababa的循环节是ab,不是aba): 解题思路:利用kmp中的next数组,首先在这样求next的数组的代码里: vo ...
 - NMAP网络扫描工具的安装与使用
			
简介 NMAP是一款流行的网络扫描和嗅探工具也是一个强大的端口扫描类安全测评工具,被广泛应用在黑客领域做漏洞探测以及安全扫描,更多的nmap是一个好用的网络工具,在生产和开发中也经常用到,主要做端口开 ...
 - centos 7创建ss服务(方式二)
			
一:安装pip yum install python-pip 如果没有python包则执行命令:yum -y install epel-release: 二:安装SS pip install shad ...
 - codeforces 1051F The Shortest Statement
			
题目链接:codeforces 1051F The Shortest Statement 题意:\(q\)组询问,求任意两点之间的最短路,图满足\(m-n\leq 20\) 分析:一开始看这道题:fl ...
 - project 2013 工时完成百分比不会自动更新填充
			
[工时完成百分比].[实际完成百分比] 需要手填 [完成百分比] 会自动填,如下图
 - 面试---Python中的模块和包是什么?
			
python模块是: 自我包含并且有组织的代码片段为模块. 表现形式为:写的代码保存为文件.这个文件就是一个模块.sample.py 其中文件名smaple为模块名字. python包是: 包是一个有 ...