首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

pytest的内置插件盘点18. nose

本文系《pytest源码剖析》系列内容

18. nose

插件路径:_pytest.nose

实现的 hook

调用的 hook

定义的 fixture

插件功能

执行 class 中的用例时,自动调用前置setup和后置teardown方法

代码片段

@hookimpl(trylast=True)def pytest_runtest_setup(item: Item) -> None: if not isinstance(item, Function): return # Don't do nose style setup/teardown on direct unittest style classes. if isinstance(item, TestCaseFunction): return

func = item

call_optional(func.obj, "setup", func.nodeid) func.addfinalizer(lambda: call_optional(func.obj, "teardown", func.nodeid))

unittest 风格的 class 用例不会被本插件处理

nose 风格的前置后置方法,尝试以 fixture 的风格执行

简评

本插件是一个弃用插件,在pytest 8.0中被彻底移除,几乎没有实用性,

对我们而言唯一的收获是,在pytest中创建基于类的测试用例时,不能再使用setup方法作为前置操作、teardown方法作为后置操作了

在pytest 7中使用时,会发出弃用警告

在pytest 8中使用时,完全不会生效了,仿佛不存在一样

最好的解决办法是,使用fixture这一pytest的主流实现方式

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Ogzlu3qEuVdaUijHtzLoCz6w0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券