pytest四:fixture_yield 实现 teardown
既然有 setup 那就有 teardown,fixture 里面的 teardown 用 yield 来唤醒 teardown的执行 在所有用例执行完后执行:yield


import pytest @pytest.fixture(scope='module')
def open():
print('打开浏览器=============') yield
print('执行teardown!!!')
print('最后关闭浏览器') def test_s1(open):
print('用例1111111') def test_s2(open):
print('用例22222222') def test_s3(open):
print('用例33333333') if __name__=='__main__':
pytest.main()
yield 遇到异常
1、如果其中一个用例出现异常,不影响 yield 后面的 teardown 执行,运行结果互不影响,并且全部用例执行完之后,yield 呼唤 teardown操作


import pytest @pytest.fixture(scope='module')
def open():
print('\n打开浏览器=============') yield
print('执行teardown!!!')
print('最后关闭浏览器') def test_s1(open):
print('用例1111111') # 如果第一个用例异常了,不影响其他用的例执行
raise NameError # 模拟异常 def test_s2(open):
print('用例22222222') def test_s3(open):
print('用例33333333') if __name__=='__main__':
pytest.main()
2.如果在 setup 就异常了,那么是不会去执行 yield 后面的teardown 内容了
3.yield 也可以配合 with 语句使用,以下是官方文档给的案例
import smtplib
import pytest @pytest.fixture(scope='module')
def smtp():
with smtplib.SMTP('smtp.gmail.com') as smtp:
yield smtp # provide the fixture value
addfinalizer 方法终结函数
1、除了 yield 可以实现 teardown,在 request-context 对象中注册addfinalizer 方法也可以实现终结函数。
2、yield 和 addfinalizer 方法都是在测试完成后呼叫相应的代码。但是 addfinalizer 不同的是:
1.他可以注册多个终结函数。
2.返些终结方法总是会被执行,无论在之前的 setup code 有没有抛出错误。这个方法对于正确关闭所有的 fixture 创建的资源非常便利,即使其一在创建或获取时失败

import smtplib
import pytest @pytest.fixture(scope='module')
def smtp_connection(request):
smtp_connection = smtplib.SMTP('smtp.gmail.com', 587, timeout=5)
def fin():
print('teardown smtp_connection')
smtp_connection.close()
request.addfinalizer(fin)
return smtp_connection # provide the fixture value
pytest四:fixture_yield 实现 teardown的更多相关文章
- pytest的setup和teardown
学过unittest的setup和teardown,前置和后置执行功能.pytest也有此功能并且功能更强大,今天就来学习一下吧. 用例运行级别: 模块级(setup_module/teardown_ ...
- python单元测试框架pytest——fixture函数(类似unitest的setup和teardown)
pytest的setup和teardown函数(曾被一家云计算面试官问到过). pytest提供了fixture函数用以在测试执行前和执行后进行必要的准备和清理工作.与python自带的unitest ...
- 面向对象+unittest+pytest
date:2018512+513 day07aft+day08mor 一.面向对象编程 1.定义类,类的继承 ps:与普通函数相比,在类中定义的函数第一个参数必须是类的本身实例变量self,在调用时, ...
- Pytest权威教程14-缓存:使用跨执行状态
目录 缓存:使用跨执行状态 使用方法 首先只重新运行故障或故障 上次运行中没有测试失败时的行为 新的config.cache对象 检查缓存内容 清除缓存内容 逐步修复失败用例 unittest.Tes ...
- pytest框架结构运行规则及命名方式
Pytest框架结构 Import pytest 类似的setup,teardown同样更灵活,还有个session() 模块级 (setup_module/teardown_module) 不在类中 ...
- 一文让你快速入门pytest框架
pytest是什么 官方文档描述: pytest is a framework that makes building simple and scalable tests easy. Tests ar ...
- python自动化测试框架
一.环境准备 1.python开发环境, python3.7 2.setuptools基础工具包 3.pip安装包管理工具 4.selenium自动化测试工具 chrom驱动下载地址: http:/ ...
- python单元测试框架笔记
目录 单元测试概述 什么是单元测试 单元测试什么进行? 单元测试由谁负责? 单元测试需要注意 单元测试覆盖类型 python 单元测试框架 unittest pytest 测试框架 单元测试概述 什么 ...
- Python3+PyCharm+Django+Django REST framework开发教程
一.说明 自己一是想跟上潮流二是习惯于直接干三是没有人可以请教,由于这三点经常搞得要死要活.之前只简单看过没写过Diango,没看过Django REST framework,今天一步到位直接上又撞上 ...
随机推荐
- 关于Java形参和实参的理解
源码地址:https://github.com/mynawang/javabasic-summary/tree/master/chapter01 1.方法的形参中,java的基本数据类型是传值调用,对 ...
- Oracle记录-开启与关闭数据库
1.配置tnsnames.ora/listener.ora #cd /usr/oracle/oracle/product/11.2.0/db_1/network/admin ---切换到安装目录 #v ...
- tcp.validnode_checking踩过的坑
对Oracle 检查ip合法性,就必须在服务器端的sqlnet.ora文件中设置如下参数 TCP.INVITED_NODES=(10.0.0.36,10.0.0.1,10.0.0.35) TCP.EX ...
- bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...
- 【BZOJ】1443: [JSOI2009]游戏Game
[算法]博弈论+二分图匹配(最大流) [题解]方格图黑白染色得到二分图, 二分图博弈:当起点不属于某个最大匹配时,后手必胜. 问题转化为那些点不属于某个最大匹配. 先找到一个最大匹配,非匹配点加入答案 ...
- luogu P4074 [WC2013]糖果公园
传送门 这种题显然要用树上莫队 何为树上莫队?就是在树上跑莫队算法就是先把树分块,然后把询问离线,按照左端点所在块为第一关键字,右端点所在块为第二关键字,时间戳(如果有修改操作)为第三关键字排序,然后 ...
- 第三周结对项目--小学生四则运算CAI软件汇报及总结(UI/web)
前言: 这周是和我队友苏卫喜一起结对开发,我主要是写项目文档需求分析,她是通过我的需求文档来进行做思维导图,之后我们通过思维导图一起讨论用户界面设计. 以下就是我的需求分析1.0版本 1. 软件名 ...
- B. Array
题目链接:http://codeforces.com/contest/224/problem/B 具体大意: 输入n,m. 给你一个区间,让你找某一段区间中包含m个不同的数,并且这段区间中的某一个小区 ...
- 深入剖析ThreadLocal实现原理以及内存泄漏问题
关于ThreadLocalMap<ThreadLocal, Object>弱引用问题: 当线程没有结束,但是ThreadLocal已经被回收,则可能导致线程中存在ThreadLocalMa ...
- 基于Python的机器学习实战:Apriori
目录: 1.关联分析 2. Apriori 原理 3. 使用 Apriori 算法来发现频繁集 4.从频繁集中挖掘关联规则 5. 总结 1.关联分析 返回目录 关联分析是一种在大规模数据集中寻找有趣 ...