运行 使用@mock.patch.object 进行修补时,有时在使用 `with mock.patch.object` 时,多个测试会干扰 nosetests

Running multiple tests cause interference in nosetests when patching with @mock.patch.object and sometimes also when using `with mock.patch.object`

我在使用@mock.patch.object 函数时观察到 nosetests 的一个非常奇怪的行为:

当我 运行 同时进行多项测试时,我得到的结果与我单独 运行 时的结果不同。具体来说,在某些情况下,当我 运行 一起进行多个 nosetests 时,@mock.patch.object 的覆盖似乎没有效果。当我使用 with 应用补丁时,没有出现此问题。

@patch.object(ObjectToOverride,....)
def test_mytest()
   # check the override

使用with方法打补丁时,后续测试不受之前测试的影响。

def test_mytest()
   with patch.object(ObjectToOverride,....):
   # check the override

感谢任何可能导致此行为的建议。

当我运行 多次测试时,ObjectToOverride 将被加载并被之前的测试使用。但我不明白为什么使用 with 或 decorator 会影响对象是否仍然可以修补。

在这两种情况下,我都可以观察到测试之间存在一些干扰。如何在 nosetest 中避免这种情况?

问题似乎与抛出错误的测试有关。之后补丁没有被正确拆除