【发布时间】:2015-08-23 18:41:02
【问题描述】:
我正在尝试测试应该自动删除旧项目的缓存类。缓存可以容纳的项目数量由一个“常量”类变量控制,如下所示:
class Cache(dict):
MAX_ITEMS = 100
出于测试目的,我想在单个测试用例的持续时间内更改该常量。使用unittest.mock.patch 我可以用MagicMock 替换类变量,但这并不是我真正想要做的。我只需要用不同的号码替换它。
有没有一种优雅的方式在 Python 中执行此操作(例如 patch),还是我应该自己在 tearDown 上重置变量?
我使用的是 Python 3.4.3
【问题讨论】:
-
你可以使用
with语法为测试中的值创建一个有限的范围,这看起来还不错。但是,如果您需要它为每个测试用例在相应的设置/拆卸方法中执行它似乎更好。 -
@Voo 最好有一个像
patch这样的函数,它只是确保在测试后恢复原始值,而不用模拟对象替换它 -
我认为使用
setUp和tearDown是可行的方法;如果您不知道另一种方式,那么下一位读者可能也不会!
标签: python unit-testing python-3.x python-unittest