簡體   English   中英

“sys.argv”的 side_effect 返回 1,1 的元組,無論我在執行 mock.patch 時將其設置為什么

[英]side_effect for "sys.argv" returns a tuple of 1,1 regardless of what I set it to when doing mock.patch

出於某種原因,當我嘗試將 sys.argv 的前兩個實例更改為它們默認為 1,1 的任何值時,side_effect 沒有效果。

"""testing"""
def check_arg():
try:
    num1 = int(sys.argv[1])
    num2 = int(sys.argv[2])
except IndexError:
    return False, False
except ValueError:
    return False, False
else:
    if num1 < num2:
        return num1, num2
  #  elif num1 == num2:
  #     return False, False
    else:
        return num2, num1       


  """test"""
  @mock.patch("sys.argv", side_effect=["9", "2"])
  def test_check_arg(self, mocktest):
    checkarg = check_arg()
    self.assertEqual(checkarg, (2, 2))

"""

問題:...,第 23 行,在 test_check_arg self.assertEqual(checkarg, (2, 2)) AssertionError: Tuples differ: (1, 1),= (2, 2)

第一個不同的元素 0:False 2

  • (1,1)
  • (2, 2)

在這種情況下, side_effect似乎不是您所需要的。 如果你使用就足夠了:

"""testing"""
def check_arg():
try:
    num1 = int(sys.argv[0])
    num2 = int(sys.argv[1])
except IndexError:
    return False, False
except ValueError:
    return False, False
else:
    if num1 < num2:
        return num1, num2
  #  elif num1 == num2:
  #     return False, False
    else:
        return num2, num1       


  """test"""
  @mock.patch("sys.argv", ["9", "2"])
  def test_check_arg(self):
    checkarg = check_arg()
    self.assertEqual(checkarg, (2, 9))

這應該可以正常工作。 但是閱讀有關sys.argv的文檔( https://docs.python.org/3/library/sys.html#sys.argvsys.argv[0]總是包含腳本的名稱,因此它可能會更好喜歡:

在這種情況下, side_effect似乎不是您所需要的。 如果你使用就足夠了:

"""testing"""
def check_arg():
try:
    num1 = int(sys.argv[1])
    num2 = int(sys.argv[2])
except IndexError:
    return False, False
except ValueError:
    return False, False
else:
    if num1 < num2:
        return num1, num2
  #  elif num1 == num2:
  #     return False, False
    else:
        return num2, num1       


  """test"""
  @mock.patch("sys.argv", ["test_argv.py", "9", "2"])
  def test_check_arg(self):
    checkarg = check_arg()
    self.assertEqual(checkarg, (2, 9))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM