- Pytest:帮助您编写更好的程序
- 完整的 Pytest 文档
- 安装和入门
- 使用和调用
- 在现有测试套件中使用 pytest
- 测试中断言的编写和报告
- Pytest 夹具:显式、模块化、可扩展
- 用属性标记测试函数
- MonkeyPatching / Mocking 模块和环境
- 临时目录和文件
- 捕获 stdout/stderr 输出
- 捕获警告
- 模块和测试文件的 Doctest 集成
- 跳过和 xfail:处理无法成功的测试
- 参数化夹具和测试功能
- 缓存:使用交叉测试运行状态
- UnitTest.TestCase 支持
- 运行为鼻子编写的测试
- 经典的 Xunit 风格设置
- 安装和使用插件
- 编写插件
- 登录
- 良好的集成实践
- 古怪的测试
- Pytest 导入机制和 sys.path/PYTHONPATH
- 设置 bash 完成
- API 引用
- _pytest.hookspec
- _pytest.python_api
- _pytest.outcomes
- _pytest.config
- _pytest.mark
- _pytest.recwarn
- _pytest.assertion
- _pytest.freeze_support
- _pytest.fixtures
- _pytest.cacheprovider
- _pytest.capture
- _pytest.doctest
- _pytest.junitxml
- _pytest.logging
- _pytest.monkeypatch
- _pytest.pytester
- _pytest.tmpdir
- _pytest.python
- _pytest.nodes
- _pytest.reports
- _pytest._code.code
- _pytest.config.argparsing
- _pytest.main
- pluggy.callers
- _pytest.config.exceptions
- py.test 2.0.0:断言++、UnitTest++、Reporting++、Config++、Docs++
- 示例和自定义技巧
- 配置
- 贡献开始
- 向后兼容策略
- Python 2.7 和 3.4 支持
- 企业版 pytest
- 项目实例
- 历史笔记
- 弃用和移除
- 发展指南
- 演讲和辅导
向后兼容策略
pytest正在积极地发展,是一个经过几十年酝酿的项目,我们不断学习新的更好的结构来表达关于测试的不同细节。
当我们实现这些修改时,我们试图确保一个简单的过渡,不想给我们的用户和社区/插件作者带来不必要的干扰。
到目前为止,pytest考虑了多种类型的向后兼容性转换:
琐碎的:简单地转换为新机制的API,不会引起有问题的更改。
我们试图无限期地支持这些机制,同时通过文档鼓励用户切换到更新/更好的机制。
过渡:新旧API不冲突,我们可以通过使用警告来帮助用户过渡,同时在较长时间内支持两者。
我们将只在主要版本中开始删除不推荐使用的功能(例如,如果我们在3.0版本中弃用某个功能,我们将在4.0版本中开始删除它),并将其保留至少两个次要版本(例如,如果我们在3.9和4.0版本中弃用某个功能,我们将在5.0版本中删除它,而不是在4.0版本中)。
当折旧到期(例如4.0已发布)时,我们不会立即删除已弃用的功能,而是使用标准警告过滤器将其转换为 错误 默认情况下。这种方法明确地表明删除是迫在眉睫的,并且仍然给您时间将不推荐使用的特性转换为警告,而不是错误,以便在您自己的时间内处理它。在下一个次要版本(例如4.1)中,该特性将被有效地删除。
真正的破坏:只有当正常的过渡是不合理的不可持续的,并且会在几年内抵消重要的发展/特征时,才应该考虑。此外,应该限制在实际用户数量非常少的API(例如只影响一些插件),并且可以提前与社区协调。
这些即将发生的变化的例子:
真正的破损必须首先在包含以下内容的问题中公布:
变更的详细说明
理论基础
对用户和插件作者的预期影响(示例 #895 )
在没有困难之后 -1 在这个问题上,应该先提出概念验证请求。
这个POC既是评估影响的协调点,也是提出过渡性解决方案的潜在灵感。
在一段合理的时间之后,PR可以合并为一个新的主要版本。
从POC到验收,PR必须包含: * Setup of deprecation errors/warnings that help users fix and port their code. If it is possible to introduce a deprecation period under the current series, before the true breakage, it should be introduced in a separate PR and be part of the current release stream. * 详细描述如何将代码移植到
doc/en/deprecations.rst
.
历史
主要关注平滑过渡-站姿(6.0版之前)
在Pytest项目中,保持向后兼容性具有非常高的优先级。尽管多年来我们已经弃用了功能,但大多数功能仍然受到支持。Pytest中的所有不赞成都是因为已经出现了完成相同任务的更简单或更有效的方法,使得做事情的旧方法变得不必要。
在pytest 3.0版本中,我们引入了一个清晰的通信方案,当我们实际移除旧的总线连接时,我们会礼貌地要求您使用新的hostness,同时给您足够的时间来调整您的测试,或者在有正当理由保留不推荐的功能时提出问题。
为了传达更改,我们使用自定义的警告层次结构发出拒绝警告(请参见 内部Pytest警告 )可使用标准方法抑制这些警告: -W
命令行标志或 filterwarnings
ini选项(请参见 捕获警告 ,但我们建议谨慎和临时使用,并在可能的情况下注意警告。
我们将只在主要版本中开始删除不推荐使用的功能(例如,如果我们在3.0版本中弃用某个功能,我们将在4.0版本中开始删除它),并将其保留至少两个次要版本(例如,如果我们在3.9和4.0版本中弃用某个功能,我们将在5.0版本中删除它,而不是在4.0版本中)。
当折旧到期(例如4.0已发布)时,我们不会立即删除已弃用的功能,而是使用标准警告过滤器将其转换为 错误 默认情况下。这种方法明确地表明删除是迫在眉睫的,并且仍然给您时间将不推荐使用的特性转换为警告,而不是错误,以便在您自己的时间内处理它。在下一个次要版本(例如4.1)中,该特性将被有效地删除。
折旧路线图
先前版本中当前已弃用和删除的功能可以在中找到 弃用和移除 .
我们使用里程碑和 deprecation 和 removal GitHub上的标签。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论