python - 运行多个测试会在使用 @mock.patch.object 打补丁时干扰 nosetests,有时也会在使用 `with mock.patch.object` 时干扰

标签 python mocking nose

我在使用@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 中避免这种情况?

最佳答案

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

关于python - 运行多个测试会在使用 @mock.patch.object 打补丁时干扰 nosetests,有时也会在使用 `with mock.patch.object` 时干扰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47473021/

相关文章:

python - 原始输入处的 Nose 测试卡住

python - 创建一个支持 json 序列化的类以用于 Celery

python - 如何使用python-mock库

testing - 为什么模拟测试框架有帮助?

python 版本、setup.py、python 别名、nose

python - 我怎样才能模拟 sqlite3.Cursor

python - 当您有多个组时,如何按连续日期进行分组?

python - 如何继承 int 并使用 isinstance 来识别它的实例?

python - 妖艳 : give error line in yaml file

python-3.x - unittest模拟和多重继承: TypeError: metaclass conflict