python - 我可以在测试用例中为我的函数模拟输入吗?

标签 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() 输入所需的数据。有没有一种方法可以模拟计算机/程序自行完成(具有特定值,因为这就是我想要的)。非常感谢!

编辑1:

这是函数代码

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

最佳答案

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))

关于python - 我可以在测试用例中为我的函数模拟输入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56305615/

相关文章:

java - 基于 SOAP 的 Web 服务的集成测试

python - django xlsxwriter 中的日期时间问题

c# - 从 Python 移植到 C#

python - 标准输出和冲洗?它是追加而不是冲洗

testing - AIX 上的 LD_PRELOAD

python - 如何更改 IMEI 号码列表的格式以包含空格?

python - Pandas:.loc 未将一个数据帧的行分配给另一个数据帧切片的一行

visual-studio-2010 - 如何在 WebTest VS2010 中绑定(bind)提取的参数

javascript - 使用 Javascript 缩小用户类型的字体大小以适应输入

php - 是否可以在运行时更改 max_input_vars?