python: создать тест для чтения неверного файла YAML - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь создать тест в Python, я хочу создать макет для открытия файла YAML, и имитировать его содержимое как недопустимый YAML и утверждать исключение.

Я пытался макетировать:

    def test_illegal_yaml_file(self):
        with patch('os.path.isfile', return_value=True):
            with patch('__main__.open', mock_open(read_data='wifi_password 12345678')):
                myObj = MyClass()
                params = myObj.get_params()
                # TODO catch exception with assert here

и внутри MyClass:

    def get_params(self):
        path = "configuration.yaml"
        params = None
        if os.path.isfile(path): # os.path.isfile is mocked here to be True
            params = self.get_parameters(path)
        return params

    def get_parameters(self, path):
        try:
            params = self.load_params_from_yaml(path)
        except Exception as e:
            Log.error('Invalid YAML file, error: {}'. format(e))
            return None
        return params

    @staticmethod
    def yaml_load(camera_configuration):
        return yaml.load(camera_configuration, Loader=yaml.FullLoader)

Я также пытался использовать IO прямо для внутренней функции:

    def test_illegal_yaml_file(self):
        un_valid_yaml = io.BytesIO('param 12345678')
        params = MyClass.yaml_load(un_valid_yaml)
        self.assertIsNone(params)

и внутри MyClass:

    @staticmethod
    def yaml_load(camera_configuration):
        return yaml.load(camera_configuration, Loader=yaml.FullLoader)

Как правильно его смоделировать, чтобы было сгенерировано исключение из недопустимого файла YAML?

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