side_effect for "sys.argv" returns 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:元组不同:(1, 1) != (2, 2)
第一个不同的元素 0:
错误的
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.argv) sys.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))
出于某种原因,当我尝试将 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:元组不同:(1, 1) != (2, 2)
第一个不同的元素 0: 错误的 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.argv) sys.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))