python - 使用 python 的 mock 临时从 dict 中删除一个对象

标签 python unit-testing testing mocking python-mock

我正在为一些检查 os.environ 中的值的代码编写测试(我知道这不是最佳的,但我必须接受它)。我想在测试期间从 os.environ 中删除一个条目。我不确定 mock 是否支持这个。我知道 patch.dict 可用于修改项目,但我希望删除键/值对。我想要这样的东西:

print os.environ
{ ... , 'MY_THING': 'foo', ... }

with mock.patch.dict.delete('os.environ', 'MY_THING'):
    # run the test
    # ( 'MY_THING' in os.environ ) should return False

# everything back to normal now    
print os.environ
{ ... , 'MY_THING': 'foo', ... }

有没有办法实现这样的壮举?

最佳答案

mock.patch.dict不像您的示例所需代码那样工作。 patch.dict 是一个需要参数的函数。您可能想像这样使用它:

>>> import os
>>> import mock
>>> with mock.patch.dict('os.environ'):
...     del os.environ['PATH']
...     print 'PATH' in os.environ
...
False
>>> print 'PATH' in os.environ
True

关于python - 使用 python 的 mock 临时从 dict 中删除一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29243269/

相关文章:

ruby-on-rails - Rails 测试单元 : How to find an unused id for a model

python - 发现 numpy 多年来百分比变化减少

python - 如何使用 Pinnacle Sports API 的 Python 包装器查询实际市场

javascript - 如何使用 vue-test-utils 测试 CSS 框架自定义组件

javascript - Vue.js Avoriaz 单元测试在使用 vue-i18n 时产生翻译警告

java - 基于 Swing 的应用程序的最佳测试工具是什么?

testing - intellij 或 android studio - 创建方法测试用例的快捷方式

python - Numpy 数组减法 : inconsistent values for large arrays

python - 是否可以限制 Flask 请求触发的 CPU/内存使用?

scala - 使用原始类型模拟案例类