既然有 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的更多相关文章

  1. pytest的setup和teardown

    学过unittest的setup和teardown,前置和后置执行功能.pytest也有此功能并且功能更强大,今天就来学习一下吧. 用例运行级别: 模块级(setup_module/teardown_ ...

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

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

  3. 面向对象+unittest+pytest

    date:2018512+513 day07aft+day08mor 一.面向对象编程 1.定义类,类的继承 ps:与普通函数相比,在类中定义的函数第一个参数必须是类的本身实例变量self,在调用时, ...

  4. Pytest权威教程14-缓存:使用跨执行状态

    目录 缓存:使用跨执行状态 使用方法 首先只重新运行故障或故障 上次运行中没有测试失败时的行为 新的config.cache对象 检查缓存内容 清除缓存内容 逐步修复失败用例 unittest.Tes ...

  5. pytest框架结构运行规则及命名方式

    Pytest框架结构 Import pytest 类似的setup,teardown同样更灵活,还有个session() 模块级 (setup_module/teardown_module) 不在类中 ...

  6. 一文让你快速入门pytest框架

    pytest是什么 官方文档描述: pytest is a framework that makes building simple and scalable tests easy. Tests ar ...

  7. python自动化测试框架

    一.环境准备 1.python开发环境, python3.7 2.setuptools基础工具包 3.pip安装包管理工具 4.selenium自动化测试工具  chrom驱动下载地址: http:/ ...

  8. python单元测试框架笔记

    目录 单元测试概述 什么是单元测试 单元测试什么进行? 单元测试由谁负责? 单元测试需要注意 单元测试覆盖类型 python 单元测试框架 unittest pytest 测试框架 单元测试概述 什么 ...

  9. Python3+PyCharm+Django+Django REST framework开发教程

    一.说明 自己一是想跟上潮流二是习惯于直接干三是没有人可以请教,由于这三点经常搞得要死要活.之前只简单看过没写过Diango,没看过Django REST framework,今天一步到位直接上又撞上 ...

随机推荐

  1. SSD详解

    This results in a significant improvement in speed for high-accuracy detection(59 FPS with mAP 74.3% ...

  2. Shell标准输出、标准错误

    shell中可能经常能看到:>/dev/null 2>&1 eg:sudo kill -9 ps -elf |grep -v grep|grep $1|awk '{print $4 ...

  3. python---memcache基本使用以及内部原理

    简单使用: import memcache mc = memcache.Client(['127.0.0.1:8081','127.0.0.1:8082','127.0.0.1:8083','127. ...

  4. Kafka记录-常用命令选项说明

    1.kafka-topics  主题 如:kafka-topics --create --zookeeper 10.0.4.142:2181/kafka --replication-factor 1 ...

  5. 使用paramiko远程执行命令、下发文件

    写部署脚本时,难免涉及到一些远程执行命令或者传输文件. 之前一直使用sh库,调用sh.ssh远程执行一些命令,sh.scp传输文件,但是实际使用中还是比较麻烦的,光是模拟用户登陆这一点,还需要单独定义 ...

  6. MQTT协议-MQTT协议解析(MQTT数据包结构)

    协议就是通信双方的一个约定,即,表示第1位传输的什么.第2位传输的什么…….在MQTT协议中,一个MQTT数据包由:固定头(Fixed header). 可变头(Variable header). 消 ...

  7. Java SE 之 DAO层接口设计思想

    用图说话 好处 1.只需要定义好IBaseDao的接口方法,并只需要实现BaseDaoImpl的方法,而具体的业务类和业务类/接口的方法的基本方法(IBaseDao已定义的)并不需要再考虑实现. 2. ...

  8. luogu P2596 [ZJOI2006]书架

    传送门 感觉要死在\(Splay\)里了 orz 这题用\(Splay\)维护这个序列,其中的第\(k\)大点代表这个序列的第\(k\)个数 第一个操作,先把那个数所在的点旋到根,然后把整个根的左子树 ...

  9. 关于Laravel 无法下载的问题

    今天在git bush用composer安装laravel5.5卡住了,无法下载 解决办法:更换到国内源,就可以下载了 运行命令: composer config -g repo.packagist ...

  10. DFP算法(转载)

    转载链接:http://blog.csdn.net/itplus/article/details/21896981 注意:式(2.25)中,蓝色变量之所以是实数可以根据它们的矩阵系数相乘为1*1得到.