在模拟中,我希望某个函数在测试中返回新值。这就是我做到的。
Class MyClass:
my_var = None
def foo(self, var1):
return somevalue
def bar(self):
my_var = foo(1)
Class TestClass(unittest.TestCase):
myClass = MyClass()
def _side_effect_foo(var1):
if condition:
return new_value
@patch("MyClass", "foo", side_effect='_side_effect_foo')
def test_foo(self):
self.myClass.bar()
Run Code Online (Sandbox Code Playgroud)
这给我一个错误:
无法将kwarg传递给我们未创建的模拟。
我使用的side_effect格式正确吗?
谢谢你的帮助!
例如,我有一个命令 commandA 并希望在执行 commandA 后获取退出代码。CommandA 预计会失败,所以我们应该得到的退出代码是 1。
如果我在终端中输入 command 作为commandA;echo $?,屏幕上会显示 1 。然而,当我用 python 做的时候,事情出错了。
我试图用os.system(commandA)or调用 commandA subprocess.call(commandA.split()),然后调用os.popen('echo $?').read(),结果为 0。
os.popen('commandA;echo $?').read() 给了我一个正确的结果,但是 commandA 的过程没有显示在屏幕上,这是我不希望它发生的。