oslotest 中的测试基类重构

包含您的 Launchpad 蓝图的 URL

https://blueprints.launchpad.net/oslo?searchtext=oslotest-refactor

作为一项通用策略,我们希望避免要求项目使用它们不受控制的库中定义的测试基类。测试固定装置更具可组合性,并且更容易进行自身测试。

问题描述

复制自 提供测试工具

我们最初创建 oslotest 是为了在所有项目的单元测试中包含基类,以便为项目提供测试套件中的通用行为。然而,当应用程序希望以不兼容的方式使用自己的基类和测试固定装置类时,使用通用的基类并不总是可行的。特别是多重继承是一个问题,因为测试用例的设置和清理顺序更难理解。

提议的变更

  1. 提供一个固定装置来更改测试用例的 maxDiff 属性,默认值为 BaseTestCase 中的 10,000。

  2. 提供一个固定装置来包装 fixtures.Timeout,使用环境变量设置实际的超时时间,基于 BaseTestCase._set_timeout()

  3. 提供一个固定装置来模拟 stdout 和 stderr,基于 BaseTestCase._fake_output()

  4. 提供一个固定装置来包装 fixtures.FakeLogger,使用环境变量设置实际的超时时间,基于 BaseTestCase._fake_logs()

  5. 提供一个固定装置来创建一个包含内容的临时文件,以复制 BaseTestCase.create_tempfiles() 的功能。我们应该为每个文件使用一个固定装置,并将生成的文件的完整路径作为固定装置的一个属性提供。

  6. BaseTestCase.setUp() 添加 DeprecationWarning

备选方案

保持原样

保持 BaseTestCase 原样可能会使其完全过时,因为项目由于多重继承的问题而放弃使用它。

Impact on Existing APIs

现有的 DeprecationWarning 除了添加弃用警告外不会被更改,因此所有现有用户将继续能够使用它,直到他们迁移到新的固定装置。

安全影响

性能影响

Configuration Impact

开发人员影响

开发人员需要创建或更新他们自己的测试基类来使用所需的固定装置。旧的测试用例至少在一个周期内不会被删除,以允许迁移时间。

Testing Impact

我们需要为新的固定装置编写单元测试。

实现

负责人

主要负责人

Doug Hellmann

里程碑

完成目标里程碑:Liberty-2

工作项

参见上文“拟议的变更”。

孵化

N/A

采用

N/A

N/A

预计 API 稳定

N/A

文档影响

每次更改都需要更新 oslotest 的 API 文档。

依赖项

参考资料

注意

本作品采用知识共享署名 3.0 非移植许可协议授权。 http://creativecommons.org/licenses/by/3.0/legalcode