@adaskl

Как убрать ввод исходных чисел и операций при тестировании программы на python?

Есть калькулятор и тест к нему, но при запуске тестов скрипт запрашивает ввод чисел. Необходимо, чтобы при запуске скрипта с тестом числа и операция либо вводилась автоматически, либо убраны, просто пройти проверки и быть выведены результаты.
Калькулятор:
class Calculator:
    def __init__(self, num1, num2):
        self.num1 = num1
        self.num2 = num2
    
    def add(self):
        return self.num1 + self.num2
    
    def subtract(self):
        return self.num1 - self.num2
    
    def multiply(self):
        return self.num1 * self.num2
    
    def divide(self):
        try:
            return self.num1 / self.num2
        except ZeroDivisionError:
            return "Деление на ноль невозможно"
        
num1 = float(input("Введите первое число: "))
num2 = float(input("Введите второе число: "))

calculator = Calculator(num1, num2)

print("Выберите операцию: ")
print("1. Сложение")
print("2. Вычитание")
print("3. Умножение")
print("4. Деление")

choice = input("Введите номер операции (1/2/3/4): ")

if choice == '1':
    print(calculator.num1, "+", calculator.num2, "=", calculator.add())

elif choice == '2':
    print(calculator.num1, "-", calculator.num2, "=", calculator.subtract())

elif choice == '3':
    print(calculator.num1, "*", calculator.num2, "=", calculator.multiply())

elif choice == '4':
    print(calculator.num1, "/", calculator.num2, "=", calculator.divide())

else:
    print("Неверный номер операции.")


Код теста:

import unittest
from calculator import Calculator

class TestCalculator(unittest.TestCase):
    def test_add(self):
        calculator = Calculator(2, 3)
        self.assertEqual(calculator.add(), 5)

    def test_subtract(self):
        calculator = Calculator(10, 5)
        self.assertEqual(calculator.subtract(), 5)

    def test_multiply(self):
        calculator = Calculator(4, 8)
        self.assertEqual(calculator.multiply(), 32)

    def test_divide(self):
        calculator = Calculator(10, 2)
        self.assertEqual(calculator.divide(), 5)
        calculator = Calculator(7, 0)
        self.assertEqual(calculator.divide(), "Деление на ноль невозможно")

if __name__ == '__main__':
    unittest.main()
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
if __name__ == '__main__':
Разберись, как это работает.
Потом заверни в первом файле всё, что ниже класса Calculator, в такой же if.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Берешь текстовый файл input.txt и записываешь в него все текстовые вводы. В том числе с переводами строк.
Потом запускаешь примерно так

$ python3 app.py < input.txt
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы