oslo_concurrency.fixture.lockutils¶
- class oslo_concurrency.fixture.lockutils.ExternalLockFixture¶
基础:
Fixture配置 lock_path,以便在单元测试中使用外部锁。
创建一个临时目录来保存文件锁,并将 oslo.config lock_path 选项设置为使用它。这可以在每个测试的基础上启用外部锁定,而不是通过 OSLO_LOCK_PATH 环境变量全局启用。
示例
def test_method(self): self.useFixture(ExternalLockFixture()) something_that_needs_external_locks()
或者,可以将 useFixture 调用放在测试类的 setUp 方法中,以便为类中的所有测试提供此功能。
在 0.3 版本中添加。
- setUp()¶
准备 Fixture 以供使用。
不应覆盖此方法。具体的 fixture 应该实现 _setUp。仍然支持覆盖 setUp,但不推荐。
在 setUp 完成后,fixture 将具有一个或多个属性,这些属性可用于(具体取决于具体的子类)。
- 引发:
如果 _setUp 失败,则引发 MultipleExceptions。MultipleExceptions 中捕获的最后一个异常将是一个 SetupError 异常。
- 返回值:
None。
- 更改于 1.3:
覆盖 setUp 的建议已反转 - 在 1.3 之前,应该覆盖 setUp(),现在不应该覆盖。
- 更改于 1.3.1:
现在捕获 BaseException,并且只有 Exception 的子类才会被包装在 MultipleExceptions 中。
- class oslo_concurrency.fixture.lockutils.LockFixture(name, lock_file_prefix=None)¶
基础:
Fixture外部锁定 fixture。
这个 fixture 基本上是带有 external 标志的 synchronized 装饰器的替代方案,以便 tearDowns 和 addCleanups 将包含在锁上下文中,用于测试之间的锁定。建议将 fixture 作为测试方法的第一行,如下所示
def test_method(self): self.useFixture(LockFixture('lock_name')) ...
或者,如果需要序列化类中的所有测试方法,则作为 setUp 中的第一行。
class TestCase(testtools.testcase): def setUp(self): self.useFixture(LockFixture('lock_name')) super(TestCase, self).setUp() ...
这是因为 addCleanups 放在一个 LIFO 队列中,该队列在测试方法退出后运行。(无论是通过完成还是引发异常)
- setUp()¶
准备 Fixture 以供使用。
不应覆盖此方法。具体的 fixture 应该实现 _setUp。仍然支持覆盖 setUp,但不推荐。
在 setUp 完成后,fixture 将具有一个或多个属性,这些属性可用于(具体取决于具体的子类)。
- 引发:
如果 _setUp 失败,则引发 MultipleExceptions。MultipleExceptions 中捕获的最后一个异常将是一个 SetupError 异常。
- 返回值:
None。
- 更改于 1.3:
覆盖 setUp 的建议已反转 - 在 1.3 之前,应该覆盖 setUp(),现在不应该覆盖。
- 更改于 1.3.1:
现在捕获 BaseException,并且只有 Exception 的子类才会被包装在 MultipleExceptions 中。