Тесты RSS

This commit is contained in:
Anton Titovets
2026-03-07 12:29:12 +03:00
parent 76077614e2
commit 61d15b99fc
3 changed files with 281 additions and 2 deletions
+4 -2
View File
@@ -1,4 +1,4 @@
Нужно создать тесты для методов %1 из модуля %2
Нужно создать тесты для методов %1 из модуля %2. Порядрок действий для каждой функции:
1. Определить область (директива #Область) функции, которая будет тестироваться
2. Найти в модуле OPI_Тесты в области ЗапускаемыеТесты функцию, которая уже соответствует области из основного модуля и/или тестирует другие функции этой же области. Если такой не существует - создать новую по примеру уже существующих
@@ -6,4 +6,6 @@
4. Для каждой тестируемой функции создать отдельную функцию в области АтомарныеТесты, название которой состоит из имени модуля (без префикса OPI_) и имени функции. Пример можно посмотреть в остальных функциях области АтомарныеТесты, желательно в тех, которые относятся к этому же модулю (если такие существуют)
5. В каждом тесте должен быть хотя бы один вызов функции Обработать. Он обращается к функции-проверке в модуле OPI_ПолучениеДанныхТестов. У каждого атомарного теста должна быть только одна функция проверки. Ее название такое же, как и у функции атомарного теста, но с префиксом "Проверка_". Располагаются проверки в области Проверки. Там присутствует множество примеров, которые можно взять за основу
6. При необходимости нескольких проверок в рамках одного теста (например, с разными данными, передаваемыми в одну тестируемую функцию), их можно ветвить при помощи передачи параметра Вариант в функцию Обработать. Пример: Проверка_ClickHouse_ОткрытьПотокGRPC (тест в модуле OPI_Тесты и проверка в модуле OPI_ПолучениеДанныхТестов)
7. При необходимости сохранить данные между двумя атомарными тестами (например, создание какого-нибудь объекта в одном тесте, а удаление - в другом), можно использовать запись параметра. Пример: Проверка_GreenMax_ОтправитьТекстовоеСообщение (тест в модуле OPI_Тесты и проверка в модуле OPI_ПолучениеДанныхТестов)
7. При необходимости сохранить данные между двумя атомарными тестами (например, создание какого-нибудь объекта в одном тесте, а удаление - в другом), можно использовать запись параметра. Пример: Проверка_GreenMax_ОтправитьТекстовоеСообщение (тест в модуле OPI_Тесты и проверка в модуле OPI_ПолучениеДанныхТестов)
При спорных моментах и непонятных ситуациях основывайся на уже реализованных функция OPI_Тесты и OPI_ПолучениеДанныхТестов в качестве примера
@@ -161,6 +161,7 @@
Разделы.Вставить("ReportPortal" , 5);
Разделы.Вставить("GRPC" , 5);
Разделы.Вставить("ClickHouse" , 5);
Разделы.Вставить("RSS" , 5);
Возврат Разделы;
@@ -210,6 +211,7 @@
Разделы.Вставить("ReportPortal" , СтандартныеЗависимости);
Разделы.Вставить("GRPC" , СтандартныеЗависимости);
Разделы.Вставить("ClickHouse" , СтандартныеЗависимости);
Разделы.Вставить("RSS" , СтандартныеЗависимости);
Возврат Разделы;
@@ -254,6 +256,7 @@
GreenMax = "GreenMax";
GRPC = "GRPC";
CHouse = "ClickHouse";
RSS = "RSS";
ТаблицаТестов = Новый ТаблицаЗначений;
ТаблицаТестов.Колонки.Добавить("Метод");
@@ -446,6 +449,8 @@
НовыйТест(ТаблицаТестов, "GR_Стриминг" , "Стриминг" , GRPC);
НовыйТест(ТаблицаТестов, "CH_ОсновныеМетоды" , "Основные методы" , CHouse);
НовыйТест(ТаблицаТестов, "CH_GRPC" , "GRPC" , CHouse);
НовыйТест(ТаблицаТестов, "RSS_МетодыRSS" , "Методы RSS" , RSS);
НовыйТест(ТаблицаТестов, "RSS_МетодыAtom" , "Методы Atom" , RSS);
Возврат ТаблицаТестов;
@@ -13364,6 +13369,114 @@
КонецФункции
Функция Проверка_RSS_СоздатьФидRSS(Знач Результат, Знач Вариант, Параметры = "")
ОжидаетЧто(ТипЗнч(Результат)).Равно(Тип("Строка"));
ОжидаетЧто(Результат).Заполнено();
ОжидаетЧто(СтрНайти(Результат, "<?xml") > 0).Равно(Истина);
ОжидаетЧто(СтрНайти(Результат, "<rss") > 0).Равно(Истина);
ОжидаетЧто(СтрНайти(Результат, "<channel>") > 0).Равно(Истина);
ОжидаетЧто(СтрНайти(Результат, "<item>") > 0).Равно(Истина);
ЗаписатьПараметр("RSS_FeedXML", Результат);
Параметры.Вставить("RSS_FeedXML", Результат);
Возврат Результат;
КонецФункции
Функция Проверка_RSS_ПолучитьСтруктуруЭлементаФидаRSS(Знач Результат, Знач Вариант)
ОжидаетЧто(OPI_Инструменты.ЭтоКоллекция(Результат, Истина)).Равно(Истина);
Если Вариант = "Пустая" Тогда
ОжидаетЧто(Результат["title"]).Равно("");
ОжидаетЧто(Результат["description"]).Равно("");
ОжидаетЧто(Результат["link"]).Равно("");
ИначеЕсли Вариант = "Соответствие" Тогда
ОжидаетЧто(ТипЗнч(Результат)).Равно(Тип("Соответствие"));
Иначе
ОжидаетЧто(Результат["title"]).Заполнено();
ОжидаетЧто(Результат["description"]).Заполнено();
ОжидаетЧто(Результат["link"]).Заполнено();
КонецЕсли;
Возврат Результат;
КонецФункции
Функция Проверка_RSS_РазобратьФидRSS(Знач Результат, Знач Вариант)
ОжидаетЧто(OPI_Инструменты.ЭтоКоллекция(Результат, Истина)).Равно(Истина);
ОжидаетЧто(Результат["title"]).Заполнено();
ОжидаетЧто(Результат["description"]).Заполнено();
ОжидаетЧто(Результат["link"]).Заполнено();
ОжидаетЧто(Результат["items"]).ИмеетТип("Массив");
ОжидаетЧто(Результат["items"].Количество() > 0).Равно(Истина);
ПервыйЭлемент = Результат["items"][0];
ОжидаетЧто(ПервыйЭлемент["title"]).Заполнено();
ОжидаетЧто(ПервыйЭлемент["description"]).Заполнено();
ОжидаетЧто(ПервыйЭлемент["link"]).Заполнено();
Возврат Результат;
КонецФункции
Функция Проверка_RSS_СоздатьФидAtom(Знач Результат, Знач Вариант, Параметры = "")
ОжидаетЧто(ТипЗнч(Результат)).Равно(Тип("Строка"));
ОжидаетЧто(Результат).Заполнено();
ОжидаетЧто(СтрНайти(Результат, "<?xml") > 0).Равно(Истина);
ОжидаетЧто(СтрНайти(Результат, "<feed") > 0).Равно(Истина);
ОжидаетЧто(СтрНайти(Результат, "xmlns=""http://www.w3.org/2005/Atom""") > 0).Равно(Истина);
ОжидаетЧто(СтрНайти(Результат, "<entry>") > 0).Равно(Истина);
ЗаписатьПараметр("RSS_AtomFeedXML", Результат);
Параметры.Вставить("RSS_AtomFeedXML", Результат);
Возврат Результат;
КонецФункции
Функция Проверка_RSS_ПолучитьСтруктуруЭлементаФидаAtom(Знач Результат, Знач Вариант)
ОжидаетЧто(OPI_Инструменты.ЭтоКоллекция(Результат, Истина)).Равно(Истина);
Если Вариант = "Пустая" Тогда
ОжидаетЧто(Результат["title"]).Равно("");
ОжидаетЧто(Результат["id"]).Равно("");
ОжидаетЧто(Результат["link"]).Равно("");
ИначеЕсли Вариант = "Соответствие" Тогда
ОжидаетЧто(ТипЗнч(Результат)).Равно(Тип("Соответствие"));
Иначе
ОжидаетЧто(Результат["title"]).Заполнено();
ОжидаетЧто(Результат["id"]).Заполнено();
ОжидаетЧто(Результат["link"]).Заполнено();
КонецЕсли;
Возврат Результат;
КонецФункции
Функция Проверка_RSS_РазобратьФидAtom(Знач Результат, Знач Вариант)
ОжидаетЧто(OPI_Инструменты.ЭтоКоллекция(Результат, Истина)).Равно(Истина);
ОжидаетЧто(Результат["title"]).Заполнено();
ОжидаетЧто(Результат["id"]).Заполнено();
ОжидаетЧто(Результат["link"]).Заполнено();
ОжидаетЧто(Результат["entries"]).ИмеетТип("Массив");
ОжидаетЧто(Результат["entries"].Количество() > 0).Равно(Истина);
ПерваяЗапись = Результат["entries"][0];
ОжидаетЧто(ПерваяЗапись["title"]).Заполнено();
ОжидаетЧто(ПерваяЗапись["id"]).Заполнено();
ОжидаетЧто(ПерваяЗапись["link"]).Заполнено();
Возврат Результат;
КонецФункции
Функция Проверка_ReportPortal_ПолучитьВременныйТокен(Знач Результат, Знач Вариант, Параметры = "")
Токен = Результат["access_token"];
+164
View File
@@ -3492,6 +3492,30 @@
#КонецОбласти
#Область RSS
Процедура RSS_МетодыRSS() Экспорт
ПараметрыТеста = Новый Структура;
RSS_СоздатьФидRSS(ПараметрыТеста);
RSS_ПолучитьСтруктуруЭлементаФидаRSS(ПараметрыТеста);
RSS_РазобратьФидRSS(ПараметрыТеста);
КонецПроцедуры
Процедура RSS_МетодыAtom() Экспорт
ПараметрыТеста = Новый Структура;
RSS_СоздатьФидAtom(ПараметрыТеста);
RSS_ПолучитьСтруктуруЭлементаФидаAtom(ПараметрыТеста);
RSS_РазобратьФидAtom(ПараметрыТеста);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти
@@ -28860,6 +28884,146 @@
#КонецОбласти
#Область RSS
Процедура RSS_СоздатьФидRSS(ПараметрыФункции)
НазваниеКанала = "Тестовый RSS канал";
ОписаниеКанала = "Описание тестового RSS канала";
СсылкаКанала = "https://example.com";
МассивЭлементов = Новый Массив;
СтруктураЭлемента = OPI_RSS.ПолучитьСтруктуруЭлементаФидаRSS(Истина);
СтруктураЭлемента["title"] = "Первый элемент";
СтруктураЭлемента["description"] = "Описание первого элемента";
СтруктураЭлемента["link"] = "https://example.com/item1";
СтруктураЭлемента["pubDate"] = OPI_Инструменты.ПолучитьТекущуюДату();
СтруктураЭлемента["author"] = "test@example.com";
СтруктураЭлемента["guid"] = "item-1";
МассивЭлементов.Добавить(СтруктураЭлемента);
СтруктураЭлемента = OPI_RSS.ПолучитьСтруктуруЭлементаФидаRSS(Истина);
СтруктураЭлемента["title"] = "Второй элемент";
СтруктураЭлемента["description"] = "Описание второго элемента";
СтруктураЭлемента["link"] = "https://example.com/item2";
СтруктураЭлемента["pubDate"] = OPI_Инструменты.ПолучитьТекущуюДату();
СтруктураЭлемента["author"] = "test@example.com";
СтруктураЭлемента["guid"] = "item-2";
МассивЭлементов.Добавить(СтруктураЭлемента);
Результат = OPI_RSS.СоздатьФидRSS(НазваниеКанала, ОписаниеКанала, СсылкаКанала, МассивЭлементов);
// END
Обработать(Результат, "RSS", "СоздатьФидRSS", , ПараметрыФункции);
КонецПроцедуры
Процедура RSS_ПолучитьСтруктуруЭлементаФидаRSS(ПараметрыФункции)
Результат = OPI_RSS.ПолучитьСтруктуруЭлементаФидаRSS();
// END
Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаRSS");
Результат = OPI_RSS.ПолучитьСтруктуруЭлементаФидаRSS(Истина);
Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаRSS", "Пустая");
Результат = OPI_RSS.ПолучитьСтруктуруЭлементаФидаRSS(Ложь, Истина);
Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаRSS", "Соответствие");
КонецПроцедуры
Процедура RSS_РазобратьФидRSS(ПараметрыФункции)
ФидXML = ПараметрыФункции["RSS_FeedXML"];
Результат = OPI_RSS.РазобратьФидRSS(ФидXML);
// END
Обработать(Результат, "RSS", "РазобратьФидRSS");
КонецПроцедуры
Процедура RSS_СоздатьФидAtom(ПараметрыФункции)
НазваниеФида = "Тестовый Atom фид";
СсылкаФида = "https://example.com";
IDФида = "https://example.com/feed";
МассивЭлементов = Новый Массив;
СтруктураЭлемента = OPI_RSS.ПолучитьСтруктуруЭлементаФидаAtom(Истина);
СтруктураЭлемента["title"] = "Первая запись";
СтруктураЭлемента["id"] = "https://example.com/entry1";
СтруктураЭлемента["link"] = "https://example.com/entry1";
СтруктураЭлемента["updated"] = OPI_Инструменты.ПолучитьТекущуюДату();
СтруктураЭлемента["summary"] = "Краткое описание первой записи";
СтруктураЭлемента["content"] = "Полное содержимое первой записи";
СтруктураЭлемента["author"] = "Автор Первый";
СтруктураЭлемента["published"] = OPI_Инструменты.ПолучитьТекущуюДату();
МассивЭлементов.Добавить(СтруктураЭлемента);
СтруктураЭлемента = OPI_RSS.ПолучитьСтруктуруЭлементаФидаAtom(Истина);
СтруктураЭлемента["title"] = "Вторая запись";
СтруктураЭлемента["id"] = "https://example.com/entry2";
СтруктураЭлемента["link"] = "https://example.com/entry2";
СтруктураЭлемента["updated"] = OPI_Инструменты.ПолучитьТекущуюДату();
СтруктураЭлемента["summary"] = "Краткое описание второй записи";
СтруктураЭлемента["content"] = "Полное содержимое второй записи";
СтруктураЭлемента["author"] = "Автор Второй";
СтруктураЭлемента["published"] = OPI_Инструменты.ПолучитьТекущуюДату();
МассивЭлементов.Добавить(СтруктураЭлемента);
Результат = OPI_RSS.СоздатьФидAtom(НазваниеФида, СсылкаФида, IDФида, МассивЭлементов);
// END
Обработать(Результат, "RSS", "СоздатьФидAtom", , ПараметрыФункции);
КонецПроцедуры
Процедура RSS_ПолучитьСтруктуруЭлементаФидаAtom(ПараметрыФункции)
Результат = OPI_RSS.ПолучитьСтруктуруЭлементаФидаAtom();
// END
Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаAtom");
Результат = OPI_RSS.ПолучитьСтруктуруЭлементаФидаAtom(Истина);
Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаAtom", "Пустая");
Результат = OPI_RSS.ПолучитьСтруктуруЭлементаФидаAtom(Ложь, Истина);
Обработать(Результат, "RSS", "ПолучитьСтруктуруЭлементаФидаAtom", "Соответствие");
КонецПроцедуры
Процедура RSS_РазобратьФидAtom(ПараметрыФункции)
ФидXML = ПараметрыФункции["RSS_AtomFeedXML"];
Результат = OPI_RSS.РазобратьФидAtom(ФидXML);
// END
Обработать(Результат, "RSS", "РазобратьФидAtom");
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти