pytest二:setup和teardown
用例运行级别
模块级(setup_module/teardown_module)开始于模块始末,全局的
函数级(setup_function/teardown_function)只对函数用例生效(不在类中)
类级(setup_class/teardown_class)只在类中前后运行一次(在类中)
方法级(setup_method/teardown_method)开始于方法始末(在类中)
类里面的(setup/teardown)运行在调用方法的前后
函数级:function与module
setup_function/teardown_function 每个用例开始和结束调用一次


从结果可以看出用例执行顺序:
setup_function》用例 1》teardown_function,setup_function》用例2》teardown_function》setup_function》用例 3》teardown_function
import pytest def setup_function():
print("setup_function:每个用例开始前都会执行") def teardown_function():
print("teardown_function:每个用例结束后都会执行") def test_one():
print("正在执行--test_one")
x = 'this'
assert 'h' in x def test_two():
print("正在执行--test_one")
x = 'hello'
assert hasattr(x, 'check') def test_three():
print("正在执行--test_one")
a = 'hello'
b = 'hello world'
assert a in b if __name__=='__main__':
pytest.main()
setup_module/teardown_module
setup_module 所有用例开始前执行一次,teardown_module 所有用例结束后执行一次


从运行结果可以看到 setup_module 和 teardown_module 整个.py 模块只执行了一次
import pytest def setup_module():
print('setup_module:整个.py模块只执行一次')
print('比如:所有用例开始前只打开一次浏览器') def teardown_module():
print('setup_module:整个.py模块只执行一次')
print('比如:所有用例结束后关闭浏览器') def setup_function():
print("setup_function:每个用例开始前都会执行") def teardown_function():
print("teardown_function:每个用例结束后都会执行") def test_one():
print("正在执行--test_one")
x = 'this'
assert 'h' in x def test_two():
print("正在执行--test_one")
x = 'hello'
assert hasattr(x, 'check') def test_three():
print("正在执行--test_one")
a = 'hello'
b = 'hello world'
assert a in b if __name__=='__main__':
pytest.main()
类和方法级:
setup_class/teardown_class:
setup_class 和 teardown_class 等价于 unittest 里面的setupClass 和 teardownClass


从结果看出,运行的优先级:setup_class》setup_method》setup 》用例》teardown》teardown_method》teardown_class
import pytest
class TestCase():
def setup(self):
print("setup:每个用例开始前都会执行")
def teardown(self):
print("teardown:每个用例结束后都会执行")
def setup_class(self):
print('setup_class:所有用例执行之前')
def teardown_class(self):
print('setup_class:所有用例执行之后')
def setup_method(self):
print('setup_method:每个用例开始前执行')
def teardown_method(self):
print('teardown_method:每个用例结束后执行')
def test_one(self):
print("正在执行--test_one")
x = 'this'
assert 'h' in x
def test_two(self):
print("正在执行--test_one")
x = 'hello'
assert hasattr(x, 'check')
def test_three(self):
print("正在执行--test_one")
a = 'hello'
b = 'hello world'
assert a in b
if __name__=='__main__':
pytest.main()
函数和类的混合:
一个.py 的文件里面既有函数用例又有类和方法用例



从运行结果看出,setup_module/teardown_module 的优先级是最大的,然后函数里面用到的 setup_function/teardown_function与类里面的 setup_class/teardown_class 互不干涉
import pytest def setup_module():
print('setup_module:整个.py模块只执行一次')
print('比如:所有用例开始前只打开一次浏览器') def teardown_module():
print('setup_module:整个.py模块只执行一次')
print('比如:所有用例结束后关闭浏览器') def setup_function():
print("setup_function:每个用例开始前都会执行") def teardown_function():
print("teardown_function:每个用例结束后都会执行") def test_one():
print("正在执行--test_one")
x = 'this'
assert 'h' in x def test_two():
print("正在执行--test_one")
x = 'hello'
assert hasattr(x, 'check') class TestCase(): def setup_class(self):
print('setup_class:所有用例执行之前') def teardown_class(self):
print('setup_class:所有用例执行之后') def test_one(self):
print("正在执行--test_one")
x = 'this'
assert 'h' in x def test_two(self):
print("正在执行--test_one")
x = 'hello'
assert hasattr(x, 'check') def test_three(self):
print("正在执行--test_one")
a = 'hello'
b = 'hello world'
assert a in b if __name__=='__main__':
pytest.main()
pytest二:setup和teardown的更多相关文章
- pytest的setup和teardown
学过unittest的setup和teardown,前置和后置执行功能.pytest也有此功能并且功能更强大,今天就来学习一下吧. 用例运行级别: 模块级(setup_module/teardown_ ...
- python单元测试框架pytest——fixture函数(类似unitest的setup和teardown)
pytest的setup和teardown函数(曾被一家云计算面试官问到过). pytest提供了fixture函数用以在测试执行前和执行后进行必要的准备和清理工作.与python自带的unitest ...
- Pytest测试框架(二):pytest 的setup/teardown方法
PyTest支持xUnit style 结构, setup() 和 teardown() 方法用于初始化和清理测试环境,可以保证测试用例的独立性.pytest的setup/teardown方法包括:模 ...
- 【pytest】(十二)参数化测试用例中的setup和teardown要怎么写?
还是一篇关于pytest的fixture在实际使用场景的分享. fixture我用来最多的就是写setup跟teardown了,那么现在有一个用例是测试一个列表接口,参数化了不同的状态值传参,来进行测 ...
- pytest 2.测试用例setup和teardown
之前我写的unittest的setup和teardown,还有setupClass和teardownClass(需要配合@classmethod装饰器一起使用),接下来就介绍pytest的类似于这类的 ...
- python:pytest中的setup和teardown
原文:https://www.cnblogs.com/peiminer/p/9376352.html 之前我写的unittest的setup和teardown,还有setupClass和teardow ...
- Pytest学习(三) - setup和teardown的使用
一.前言 从文章标题可以看出,就是初始化和释放的操作,根据我的java习惯来学习pytest,个人感觉没差太多,理解上也不是很难. 哦,对了,差点跑题了,这个框架是基于Python语言的,在学习的时候 ...
- pytest自动化2:测试用例setup和teardown
前言: pytest支持函数和类两种用例方式,针对每种情况都有不同的代码 pytest用例运行级别 模块级(setup_module/teardown_module)开始于模块始末,全局的 函数级(s ...
- pytest文档4-测试用例setup和teardown
前言 学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用例开始前和结束后都去执行一次. 当然还有更高级一点的setupClass和teardownClass,需 ...
- Pytest系列(3) - setup和teardown的详细使用
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 用过unittest的童鞋都 ...
随机推荐
- prototype和__proto__区别
prototype和__proto__分别是显式原型和隐式原型,直接上代码吧: function person(){ this.age = 12; } person.prototype; //Obje ...
- webserver apache 2.2.22-7/ apache webdav / redhat 6.3
s 问题1:Failed to resolve server name for 10.24.41.161 (check DNS) / RedHat 6.3 64位系统 / apache htt ...
- Port Forwarding in Windows
转自:http://woshub.com/port-forwarding-in-windows/ Since Windows XP there is a built-in ability in Mic ...
- apache服务Forbidden 403问题精彩总结
部署apache服务Forbidden 403问题小结 ForbiddenYou don't have permission to access / on this server. http错误代码4 ...
- 【1】【JUC】JDK1.8源码分析之ArrayBlockingQueue,LinkedBlockingQueue
概要: ArrayBlockingQueue的内部是通过一个可重入锁ReentrantLock和两个Condition条件对象来实现阻塞 注意这两个Condition即ReentrantLock的Co ...
- Android studio 自动导入(全部)包 import
http://blog.csdn.net/buaaroid/article/details/44979629 1 Android studio 只有import单个包的快捷键:Alt+Enter.没有 ...
- 表格重新加载 where 携带上次值问题
表格重载两种方式: 方式一: tableIns.reload(options) 注意这种方式的重载是不会携带上次数据加载时的where值 //使用 第一次渲染返回的对象 var table ...
- axios - 基于 Promise 的 HTTP 异步请求库
axios 是基于 Promise 的 HTTP 请求客户端,可同时在浏览器和 node.js 中使用.Vue 更新到2.0之后,作者就宣告不再对 vue-resource 模块更新,而是推荐使用 a ...
- 运维数据库平台~inception测试脚本
一 简介:今天咱们来聊聊inception的测试脚本 二 范例: #!/usr/bin/python import MySQLdb sql='/*--user=;--password=;--host= ...
- python - 装饰器+描述符(给类添加属性且属性类型审核)
装饰器+描述符 实现给一个类添加属性且对添加的时,对属性进行类型审核: def zsq(**kwargs): def fun(obj): for i,j in kwargs.items(): seta ...