def create_config(self): """ Возвращает список список курсов из конфига и список студентов из гугл таблицы """ conf.Configuration().load_config() self.config = Config(id=self.user.id, **(conf.Configuration().get_data())) self.config.save()
def test_decode_error_config(self, mock_): """ Негативный тест Проверяет исключение, если конфигурационный файл содержит ошибку json """ config = conf.Configuration() config.path = os.path.join("tests", "resources", "empty_file.json") with self.assertRaises(ValueError) as raised_exception: config.path = os.path.join("tests", "resources", "empty_file.json") config.load_config() self.assertEqual(raised_exception.exception.args[0], "Ошибка в конфигурационном файле") with self.assertRaises(ValueError) as raised_exception: config.path = os.path.join("tests", "resources", "config_decode_error_1.json") config.load_config() self.assertEqual(raised_exception.exception.args[0], "Ошибка в конфигурационном файле") with self.assertRaises(ValueError) as raised_exception: config.path = os.path.join("tests", "resources", "config_decode_error_2.json") config.load_config() self.assertEqual(raised_exception.exception.args[0], "Ошибка в конфигурационном файле") with self.assertRaises(ValueError) as raised_exception: config.path = os.path.join("tests", "resources", "config_decode_error_3.json") config.load_config() self.assertEqual(raised_exception.exception.args[0], "Ошибка в конфигурационном файле")
def test_invalid_key(self, mock_): """ Негативный тест Проверяет исключение, если запрашиваются данные по недействительному ключу """ config = conf.Configuration() config.path = os.path.join("tests", "resources", "config.json") config.load_config() with self.assertRaises(ValueError) as raised_exception: config.get_config_by_key('key') self.assertEqual(raised_exception.exception.args[0], "Ключ недействителен: 'key'") with self.assertRaises(ValueError) as raised_exception: config.get_config_by_key('ctepic') self.assertEqual(raised_exception.exception.args[0], "Ключ недействителен: 'ctepic'") with self.assertRaises(ValueError) as raised_exception: config.get_config_by_key('googleTable') self.assertEqual(raised_exception.exception.args[0], "Ключ недействителен: 'googleTable'")
def test_init_positive(self): """ Позитивный тест Корректное значение данных конфигурации """ config = conf.Configuration() conf.Configuration.__init__( config, os.path.join("tests", "resources", "config.json")) correct_data_config = { 'google_table': { 'URL': 'https://docs.google.com/spreadsheets/d/1t1szRuyb023sfuXLf6p-fDLmMcNtAmKfK0enj4URTxU', 'Sheet': 0, 'FIO_Col': 1, 'FIO_Rows': [11, 21], 'ID_Col': 5, 'ID_Rows': [11, 21] }, 'stepic': { 'id_course': [64] } } self.assertEqual(config.get_data(), correct_data_config)
def test_get_by_key_positive(self): """ Позитивный тест Корректное значение конфигурации по ключу """ config = conf.Configuration() config.path = os.path.join("tests", "resources", "config.json") config.load_config() correct_google = { 'URL': 'https://docs.google.com/spreadsheets/d/1t1szRuyb023sfuXLf6p-fDLmMcNtAmKfK0enj4URTxU', 'Sheet': 0, 'FIO_Col': 1, 'FIO_Rows': [11, 21], 'ID_Col': 5, 'ID_Rows': [11, 21] } correct_stepic = {'id_course': [64]} self.assertEqual(config.get_google_table_config(), correct_google) self.assertEqual(config.get_config_by_key('google_table'), correct_google) self.assertEqual(config.get_stepic_config(), correct_stepic) self.assertEqual(config.get_config_by_key('stepic'), correct_stepic)
def test_wrong_path_config(self, mock_): """ Негативный тест Проверяет исключение, если пользователь указал не верный путь к конфигурационному файлу """ config = conf.Configuration() with self.assertRaises(ValueError) as raised_exception: config.path = os.path.join("resources", "wrong_path.json") config.load_config() self.assertEqual( raised_exception.exception.args[0], "Указанного пути не существует, path='resources\wrong_path.json'") with self.assertRaises(ValueError) as raised_exception: config.path = os.path.join("my_resources", "config.json") config.load_config() self.assertEqual( raised_exception.exception.args[0], "Указанного пути не существует, path='my_resources\config.json'") with self.assertRaises(ValueError) as raised_exception: config.path = os.path.join("windows", "config.json") config.load_config() self.assertEqual( raised_exception.exception.args[0], "Указанного пути не существует, path='windows\config.json'")
def test_empty_data(self, mock_): """ Негативный тест Проверяет исключение, если конфигурационные данные пусты """ config = conf.Configuration() config.path = os.path.join("tests", "resources", "config_empty.json") config.load_config() with self.assertRaises(ValueError) as raised_exception: config.get_google_table_config() self.assertEqual(raised_exception.exception.args[0], "Конфигурационные данные отсутствуют") with self.assertRaises(ValueError) as raised_exception: config.get_stepic_config() self.assertEqual(raised_exception.exception.args[0], "Конфигурационные данные отсутствуют") with self.assertRaises(ValueError) as raised_exception: config.get_config_by_key('stepic') self.assertEqual(raised_exception.exception.args[0], "Конфигурационные данные отсутствуют") with self.assertRaises(ValueError) as raised_exception: config.get_config_by_key('google_table') self.assertEqual(raised_exception.exception.args[0], "Конфигурационные данные отсутствуют")
:return: [] - список значений всех ячеек строки """ if self.Sheet: return self.Sheet.row_values(num) def get_list(self, col, row_from, row_to): """ Геттер списка строк столбца из заданного диапазона :param col: int - номер столбца :param row_from: int -начало диапазона строк :param row_to: int -конец диапазона строк :return: [] - список значений ячеек требуемого диапазона строк из столбца """ if self.Sheet: all_rows = self.get_column(col) if all_rows: return all_rows[row_from - 1:row_to - 1] if __name__ == "__main__": # Создание(чтение) конфигурации config = conf.Configuration() # Получение конфигурационных данных о гугл-таблице table_config = config.get_google_table_config() # Открытие таблицы с помощью gspread согласно конфигурационным данным a = GoogleTable() a.set_table(table_config['URL'], table_config['Sheet']) # Получение списка из таблицы print(a.get_list(table_config['FIO_Col'], table_config['FIO_Rows'][0], table_config['FIO_Rows'][1])) print(a.get_list(table_config['ID_Col'], table_config['ID_Rows'][0], table_config['ID_Rows'][1]))