Могу ли я эмулировать ввод для своей функции внутри контрольного примера? - PullRequest
0 голосов
/ 25 мая 2019

В настоящее время я пытаюсь создать Test Case для моей программы, но я столкнулся с трудностью.Таким образом, я структурировал свой код: есть функция, которая принимает входные данные, и в соответствии с этим входом она строит график, а затем есть функция, которая вычисляет что-то о графике.Я также должен иметь этот тип ввода для работы, на которую я претендую.(Я не могу провести простой модульный тест с графиком в качестве входных данных).

Тестовый файл до сих пор выглядит следующим образом:

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 Ответ

1 голос
/ 25 мая 2019
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))
...