我们目前尝试使用 side_effect 模拟类对象的实例变量。第一次访问属性时,我们希望获得与第二次不同的值。我们测试了一个异步方法,并且在两次访问期间该值可能会发生变化。
这是一个简单的例子:
from unittest import TestCase
from unittest.mock import PropertyMock, patch
class MyObject:
def __init__(self):
self.variable = None
def my_func(self):
print(self.variable)
print(self.variable)
class TestObject(TestCase):
def test_my_func(self):
object = MyObject()
with patch.object(object, "variable", new_callable=PropertyMock(side_effect=["test", "test2"])):
object.my_func()
我们希望在第一个 test 和 test2 时打印。 但输出是:
test
test
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
答案 0 :(得分:0)
也许你可以用这样的东西来简化你的用例:-
class MyClass():
def __init__(self):
self.__var = 0
@property
def var(self):
rv = self.__var
self.__var += 1
return rv
MC = MyClass()
print(MC.var)
print(MC.var)
每次使用这种技术获取 MC.var 时,它都会加 1。显然是您主题的变体,但可能会给您一些想法