当前位置: 首页 > 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.gsyq.cn/news/1515565.html

相关文章:

  • 2026年口溶膜包装机工厂深度调研:技术路线、应用场景与供应商能力对比 - 优质品牌商家
  • 成都格栅板:成都平台钢格板/成都异形钢格板/成都拧花网/成都插接钢格板/成都热镀锌钢格板/技术选型 - 优质品牌商家
  • 一次搞定海康、大华、宇视摄像头时间同步:ONVIF SetSystemDateAndTime实战避坑指南
  • SpringCloud Alibaba微服务 -- OpenFeign的使用(保姆级)
  • 【四旋翼】基于扰动补偿的四旋翼无人机自适应模型预测控制研究Matlab实现
  • 菏泽黄金回收2026最新行情 余生黄金回收等六家门店实测 - 余生黄金回收
  • 法考主观题考哪些科目|主观题|资料已整理
  • 分组聚合不是语法,是数据思维的建模能力
  • 从期末考到实战:用STM32F103C8T6和Keil MDK手把手带你复现一个LED流水灯
  • 复刻Ask Jeeves:用RAG+轻量LLM实现拟人化精准问答
  • MCP协议:让大模型从‘会说话’到‘能动手’的工程化标准
  • ArcGIS里用渔网法算生物丰度,从分类图到分布图保姆级教程
  • 贵阳六月金价回落黄金回收实测余生黄金回收等六家 - 余生黄金回收
  • 2026年南充桶装水厂家选择指南:水源、服务与性价比深度分析 - 优质品牌商家
  • 图纸防泄密软件有哪些?最新盘点3款CAD图纸加密软件,功能全解析
  • WindowsCleaner:终极Windows系统优化工具,轻松解决C盘爆红问题
  • 鹰潭市2026年最新 - 盛世金银回收
  • GPT-4的1.8万亿参数与2%激活真相:MoE稀疏化原理与工程落地
  • Pandas分块读取chunksize实战:内存优化与大数据处理
  • 榆林市2026年最新 - 盛世金银回收
  • 如何永久激活IDM:2024年免费激活与试用重置完整教程
  • 邢台市2026年最新 - 大熊猫898989
  • Agent对话设计实战:从FIPA协议遗产到现代云原生协议栈
  • 2026年美国苏威peek靠谱供应商top10实力盘点:pvdf聚偏氟乙烯美国杜邦/优选推荐 - 优质品牌商家
  • 终极Minecraft启动器PCL2完整指南:从快速配置到高级优化
  • 如何用5分钟搭建你自己的实时多说话人转录系统:WhisperLiveKit完整指南
  • 从入门到精通:Gemma-4-26B-A4B-it-qat-q4_0-gguf多模态任务实战教程(文本+图像+音频处理)
  • 基于CANN昇腾NPU的AscendSiPBoost信号处理加速库:FFT/BLAS/CFAR融合算子全链路解析与实践
  • 2026年光伏产品测试恒温恒湿试验机选购指南,价格多少钱? - myqiye
  • 徐州市2026年最新 - 大熊猫898989