【发布时间】:2020-12-11 14:25:45
【问题描述】:
在名为 gui.py 的文件中测试非常简单:
def getInputs():
a = int(input("Enter Liters : "))
b = int(input("Enter Persons: "))
典型的东西,比如正数,没有字符等。 现在有运行的测试用例,例如:
import gui # The code to test
import unittest # The test framework
from unittest.mock import patch
class Test_guiInputs1(unittest.TestCase):
@patch('builtins.input')
def test_getInputs1(self, mock_input):
mock_input.side_effect = [20, 2]
tuple = (20, 2)
self.assertEqual(gui.getInputs(), tuple)
class Test_guiInputs2(unittest.TestCase):
@patch('builtins.input')
def test_getInputs(self, mock_input):
mock_input.side_effect = [-20, 2]
tuple = (-20, 2)
self.assertEqual(gui.getInputs(), tuple)
现在有 2 个用 1 个方法分类,因为我没有设法在第一个类中输入第二种方法。我想知道模拟函数是否需要重新初始化。 像这样的所有方法...
class Test_guiInputs3(unittest.TestCase):
@patch('builtins.input')
def test_getInputs1(self, mock_input):
mock_input.side_effect = [-20, 2]
tuple = (-20, 2)
self.assertEqual(gui.getsome(), tuple)
def test_getInputs2(self, mock_input2):
mock_input2.side_effect = [-20, 2]
tuple2 = (-20, 2)
self.assertEqual(gui.getsome(), tuple2)
...导致第二种方法的测试结果失败。第一个在 VSC 中获得绿旗(如预期的那样)。第二个 - 即使与第一个测试用例的值相同。 有谁知道出了什么问题? (Python 3.7.1、VSC、Windows 10 Pro 以防这对于任何已知版本特定的错误都很重要。)
【问题讨论】:
-
基于测试方法,我假设
getInputs实际上返回(a, b)?
标签: python unit-testing testing mocking