我可以在测试用例中模拟功能输入吗?

时间:2019-05-25 14:14:25

标签: python testing input mocking

我目前正在尝试为我的程序制作一个测试用例,但是我遇到了困难。顺便说一下,我的代码结构化了,有一个函数接受输入,然后根据该输入建立一个图形,然后有一个函数计算图形。我还需要为我要申请的工作提供此类输入。 (我无法使用图作为输入来进行简单的单元测试。

到目前为止的测试文件如下:

import unittest
from main_file import calculate, create_grid

class TestCase1(unittest.TestCase):

        def test1(self):

            data = create_grid()
            self.assertEqual(2, calculate(data))

它现在的工作方式,我自己通过create_grid()输入所需的数据。有没有办法我可以模仿计算机/程序来完成它(具有特定的值,因为这正是我想要的)。非常感谢你!

EDIT1:

这是功能代码

def create_grid():
    rows, cols = [int(x) for x in input("Enter two numbers here: " + "\n").split()]

    for _ in range(rows):
        row = list(map(str, input().split()))
        grid.append(row)
    return grid

1 个答案:

答案 0 :(得分:1)

from unittest.mock import patch
from main_file import calculate, create_grid

class TestCase1(unittest.TestCase):

    def test1(self):
        with patch('builtins.input', side_effect=[1,2,3]):
            data = create_grid()
            self.assertEqual(2, calculate(data))