gpt4 book ai didi

python - 如何将 builtins.input 用于多个输入

转载 作者:行者123 更新时间:2023-11-28 21:32:53 26 4
gpt4 key购买 nike

在我的单元测试中,我在测试中有 2 个提示。我正在尝试使用 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()案例(在第二个 assertEqual 调用之后的倒数第二个 a.setProfileName())。

    self.assertEqual(a.getProfileName(), self.profileName_prod)

失败的原因是因为a.getProfileName正在返回 self.profileName_dev 的值而不是 self.profileName_prod .

我已经在 python cli 中测试了我的代码以确保行为正确。

欢迎任何反馈。

谢谢大家!

最佳答案

两次修补同一个函数不会使其在不同的调用中返回不同的值。您可以使用 Mock 对象的 side_effect 属性,方法是使用您希望函数在连续调用中返回的值列表来设置它:

from unittest.mock import patch
@patch('builtins.input', side_effect=['dev', 'prod'])
def test_input(mock_input):
assert input() == 'dev'
assert input() == 'prod'
test_input() # this will not raise an exception since all assertions are True

关于python - 如何将 builtins.input 用于多个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55580016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com