Как проверить class :: method (), который создает файл? - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь реализовать класс, у которого есть метод для создания нового файла на основе ввода с клавиатуры. У меня есть файл с именем FileManipulator.py , который содержит класс + метод:

class FileManipulator:
    def __init__(self):
        pass

    def fileChecker(self):
        print("+++ EXECUTING FILE CREATION METHOD +++")
        new_custom_filename = input("Give filename: ")
        custom_file_path = input("Give path where to create file: ")
        print(custom_file_path)
        try:
            new_file = open(custom_file_path + "/" + new_custom_filename + ".ttcn3", "x+")
        except OSError:
            print("Creation of the file %s failed" % new_custom_filename)
        else:
            print("Successfully created the file %s" % new_custom_filename)

Выполнение таким образом:

fm_obj = FileManipulator()
result = fm_obj.fileChecker()

Я вижу "file_name_give_as_input.ttcn3" создан на пути, который я также указываю в качестве ввода.

Проблема в том, что результат будет иметь тип NONE

В этом случае я не могу правильно проверить мой метод. Я создал python unittest как это:

from unittest import TestCase
from FileManipulator import FileManipulator
import os

class FileManipulatorTest(TestCase):
    def test_fileChecker(self):
       FM = FileManipulator()
       result = FM.fileChecker()
       self.assertEqual(os.path.abspath(result, "ut_testing.ttcn3"))

if __name__ == '__main__':
   unittest.main()

И тест не пройден, потому что:

Ожидается: Нет

Факт:. \ Test_cases \ ut \ ut_testing.ttcn3

Мой вопрос: Как я могу создать unittest, который будет проверять, "file.ttcn3" "физически" создан в указанном c местоположении?

Может быть, я неправильно тестирую, поскольку запускаю метод, который будет ожидать ввода данных пользователем, что нарушает автоматизацию данного конкретного теста и может привести к зависанию теста при выполнении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...