是否可以修补类实例变量,并强制它在每次引用时返回不同的值?具体地说,我感兴趣的是使用side_effect参数
from unittest.mock import patch
def run_test():
myClass = MyClass()
for i in range(2):
print(myClass.member_variable)
class MyClass():
def __init__(self):
self.member_variable = None
@patch('test_me.MyClass.member_variable',side_effect=[1,2], create=True)
def test_stuff(my_mock):
run_test()
assert False
-------------- Captured stdout call ---------------------------------------------------------------------------------------------------------------------
1
2
side_effect
可以是函数、iterable或异常(https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.side_effect)。我想这就是它不起作用的原因。在另一种测试方法是:
文件如下:https://docs.python.org/3/library/unittest.mock.html#unittest.mock.patch
在你所举的例子中,我无法改变我所想的方式,你可能在这个类中有更多的项目,这个想法可以帮助你。在
不是对属性产生副作用的最佳选择,但它在我需要的时候起作用了。在
附言:最后,我把带我来问你问题的代码作为例子。在
示例:
测试:
^{pr2}$如你所见,我通过改变每一个的副作用来重新创建magicmock。它不是漂亮的代码和超级Python,但它如预期的那样工作。 我用@rsarai从unittest文档中发送的链接创建这个magicmock对象。在
相关问题 更多 >
编程相关推荐