当前位置: 首页 > news >正文

第十八:Pytest中的yield操作退出清理数据

一.项目目录

二.yield关键字

1.它不是单独存在,要写在fixtrue标记的固件中。2.在声明的固件fixture中加入yield关键字,在它下面写测试用例,其他有关于固件的使用没有任何差别。3.fixture里面的teardown用yield来唤醒teardown的执行。4.如果测试用例中的代码出现异常或者断言失败,并不会影响它的固件中yield后的代码执行。但是如果固件中的yield之前的代码也就是相当于setup部分的带代码,出现错误或断言失败,那么yield后的代码将不会再执行,当然测试用例中的代码也不会执行。

三.fixture的作用域scope

1.scope=“function”

1.1.当pytest.fixture(scope="function")时,每个方法(函数)都会执行一次

test_yield_function.py

# 当pytest.fixture(scope="function") 时,每个方法(函数)都会执行一次。importpytest@pytest.fixture(scope="function")deflogin():print(u"登录成功")yieldprint(u"用例执行完成,收尾")deftest_one(login):print(u'操作1')deftest_two(login):print(u'操作2')deftest_three(login):print(u'操作3')if__name__=="__main__":pytest.main(["-s","test_yield_function.py"])#此时test1,test2,test3三个地方都调用了login函数,并且它会在每一个用例前执行一次。

1.2.如果test1不调用,test2调用login,test3不调用,运行顺序会是怎样的?

test_yield_function.py

importpytest@pytest.fixture(scope="function")deflogin():print(u"登录成功")yieldprint(u"用例执行完成,收尾")deftest_one():print(u'操作1')deftest_two(login):print(u'操作2')deftest_three():print(u'操作3')if__name__=="__main__":pytest.main(["-s","test_yield_function.py"])#function级别的fixture在用例test2调用前执行一次。

2.scope=“module”

2.1.fixture参数scope=”module”,module作用是整个.py文件都会生效( 整个文件只会执行一次),用例调用时,参数写上函数名称就行。

test_yield_module.py

# 当fixture参数scope=”module”,module作用是整个.py文件都会生效( 整个文件只会执行一次),用例调用时,参数写上函数名称就行。importpytest@pytest.fixture(scope="module")deflogin():print(u"登录成功")yieldprint(u"用例执行完成,收尾")deftest_one(login):print(u'操作1')deftest_two(login):print(u'操作2')deftest_three(login):print(u'操作3')if__name__=="__main__":pytest.main(["-s","test_yield_module.py"])

2.2.如果test1不调用,test2调用login,test3不调用,运行顺序会是怎样的?

test_yield_module.py

importpytest@pytest.fixture(scope="module")deflogin():print(u"登录成功")yieldprint(u"用例执行完成,收尾")deftest_one():print(u'操作1')deftest_two(login):print(u'操作2')deftest_three():print(u'操作3')if__name__=="__main__":pytest.main(["-s","test_yield_module.py"]#module级别的fixture只会在用例test2调用前执行一次。

三.yield执行teardown

1.fixture里面的teardown用yield来唤醒teardown的执行

test_yield_module_one.py

importpytest@pytest.fixture(scope="module")deflogin():print(u"登录成功")yieldprint(u"执行teardown!")print(u"用例执行完成,收尾")deftest_one(login):print(u'操作1')deftest_two(login):print(u'操作2')deftest_three(login):print(u'操作3')if__name__=="__main__":pytest.main(["-s","test_yield_module_one.py"])

四.yield遇到异常

1.如果其中一个用例出现异常,不影响yield后面的teardown执行,运行结果互不影响,并且在用例全部执行完之后,会呼唤teardown的内容。

test_yield_module_two.py

importpytest@pytest.fixture(scope="module")deflogin():print(u"登录成功")yieldprint(u"执行teardown!")print(u"用例执行完成,收尾")deftest_one(login):print(u'操作1')# 如果第一个用例异常了,不影响其他的用例执行raiseNameError# 模拟异常deftest_two(login):print(u'操作2')deftest_three(login):print(u'操作3')if__name__=="__main__":pytest.main(["-s","test_yield_module_two.py"])

2.如果在setup就异常,那么是不会去执行yield后面的teardown内容。

test_yield_module_three.py

importpytest@pytest.fixture(scope="module")deflogin():# 如果在setup就异常了,那么是不会去执行yield后面的teardown内容了assert1==2print(u"登录成功")yieldprint(u"执行teardown!")print(u"用例执行完成,收尾")deftest_one(login):print(u'操作1')# 如果第一个用例异常了,不影响其他的用例执行#raise NameError # 模拟异常deftest_two(login):print(u'操作2')deftest_three(login):print(u'操作3')if__name__=="__main__":pytest.main(["-s","test_yield_module_three.py"])


http://www.jsqmd.com/news/1003782/

相关文章:

  • 济宁卖旧黄金2026大盘价回收商家实测对比 - 余生黄金回收
  • 基于极限学习机-自适应推进算法ELM-Adaboost的风电功率预测研究附Matlab代码
  • VS2010 C++加法DLL工程:含源码、编译配置与调用示例
  • 2026年刀柄热缩机厂家:旭晟精密工具,定义不锈钢/工具钢/热胀刀柄热缩机新标准 - 品牌发掘
  • 计算机毕业设计之社区母婴用品共享平台
  • 自回归模型实战指南:从ARIMA到Transformer的工程落地
  • 告别枯燥理论!用Multisim手把手教你仿真一个3MHz调幅发射机(附MC1496乘法器电路)
  • 2026揭阳黄金回收六店实测 余生黄金回收领衔 - 余生黄金回收
  • 成都格栅板:成都平台钢格板/成都异形钢格板/成都拧花网/成都插接钢格板/成都热镀锌钢格板/技术选型 - 优质品牌商家
  • 一次搞定海康、大华、宇视摄像头时间同步:ONVIF SetSystemDateAndTime实战避坑指南
  • 靠谱的驾校驾考机构怎么选,这几招你要知道 - 工业品牌热点
  • 汇川Easy320 PLC网口转串口实战:手把手教你用TCP指令控制RS485设备
  • SpringCloud Alibaba微服务 -- OpenFeign的使用(保姆级)
  • 【四旋翼】基于扰动补偿的四旋翼无人机自适应模型预测控制研究Matlab实现
  • SD卡驱动开发避坑:DAT3引脚的双重身份(数据线+检测脚)与SPI模式下的特殊处理
  • 菏泽黄金回收2026最新行情 余生黄金回收等六家门店实测 - 余生黄金回收
  • Proteus仿真SPI读写EEPROM:用51单片机做个掉电不丢数据的计数器(附完整代码)
  • 2026年余杭企业拓展培训新趋势:从传统团建到年轻化沉浸式体验的转型实践 - 优质品牌商家
  • 法考主观题考哪些科目|主观题|资料已整理
  • 复古数字电路设计:用74系列芯片实现二进制转BCD,Multisim仿真全记录
  • 哈尔滨余生黄金回收2026金价透明变现攻略 - 余生黄金回收
  • 2026年国内TOP5可持续发展管理系统客观排行 - 优质品牌商家
  • 从FPGA到CUDA:手把手拆解软件化雷达(SR)的硬件选型与数据处理流水线
  • 分组聚合不是语法,是数据思维的建模能力
  • 七颗行星逻辑谜题:环形排列与约束推理实战指南
  • 海口黄金回收实测 六家正规门店横评 - 余生黄金回收
  • 从TON到TONR:用S7-1200四种定时器玩转设备控制(含流水线启停/报警延时案例)
  • 从期末考到实战:用STM32F103C8T6和Keil MDK手把手带你复现一个LED流水灯
  • 济宁余生黄金回收2026行情与避坑全攻略 - 余生黄金回收
  • 如何在Windows资源管理器中直接预览3D模型:STL缩略图工具完全指南