在我的单元测试中,我在测试中有两个提示。我试图使用2@patch("builtins.input")
,但它似乎只接受返回值中的1。在
@patch("builtins.input")
@patch("builtins.input")
def test_setProfileName_modify_init_prompt_empty(self, paramName1, paramName2):
paramName1.return_value = self.profileName_prod
paramName2.return_value = self.profileName_dev
a = c.ALMConfig(self.configType)
self.assertTrue(a.setProfileName())
self.assertEqual(a.getProfileName(), self.profileName_dev)
self.assertEqual(a.profileName, self.profileName_dev)
self.assertTrue(a.setProfileName())
self.assertEqual(a.getProfileName(), self.profileName_prod)
self.assertEqual(a.profileName, self.profileName_prod)
调用a.setProfileName()
将在我的函数中使用input()
调用提示输入1。在这个测试中,它将调用a.setProfileName()
两次。在
a.setProfileName()
,我将输入self.profileName_prod
的值。在self.profileName_dev
的值。在但是在第二个a.setProfileName()
情况(在第二个a.setProfileName()
调用之后的第二个最后一个a.setProfileName()
)之后,测试失败。在
失败的原因是a.getProfileName
返回的是self.profileName_dev
的值,而不是{
我在pythoncli中测试了我的代码,以确保行为是正确的。在
欢迎任何反馈。在
谢谢各位!在
对同一个函数进行两次修补不会使它在不同的调用中返回不同的值。您可以使用
Mock
对象的side_effect
属性,方法是使用希望函数在连续调用中返回的值列表:我重温了blhsing的解决方案,它更加优雅。下面是我的工作测试代码:
谢谢大家的评论!:)
相关问题 更多 >
编程相关推荐