我想模拟一个调用带有参数的外部函数的函数。我知道如何模拟一个函数,但是我不能给出参数。我尝试了@ patch,side_effects,但没有成功。
def functionToTest(self, ip):
var1 = self.config.get(self.section, 'externalValue1')
var2 = self.config.get(self.section, 'externalValue2')
var3 = self.config.get(self.section, 'externalValue3')
if var1 == "xxx":
return False
if var2 == "yyy":
return False
[...]
Run Code Online (Sandbox Code Playgroud)
在我的测试中,我可以这样做:
def test_functionToTest(self):
[...]
c.config = Mock()
c.config.get.return_value = 'xxx'
Run Code Online (Sandbox Code Playgroud)
因此,var1,var2和var3都使用“ xxx”相同的值,但是我不知道如何模拟每条指令并给出我想要的var1,var2和var3值
(python版本2.7.3)
使用side_effect排队一系列的返回值。
c.config = Mock()
c.config.get.side_effect = ['xxx', 'yyy', 'zzz']
Run Code Online (Sandbox Code Playgroud)
第一次c.config.get调用,它将返回'xxx';第二次'yyy';第三次,'zzz'。(如果是第四次调用,则会引发StopIteration错误。)
| 归档时间: |
|
| 查看次数: |
1696 次 |
| 最近记录: |