Skip to content

Тестирование через образец исходных данных

Евгений Мартыненков edited this page Apr 12, 2016 · 3 revisions

Версия 4.Х

Для тестирования данных с помощью макетов-образцов в продукте есть утверждения

  • ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям
  • ПроверитьРавенствоТаблиц

Схема тестирования при сравнении с образцом

  • исходные данные (образец, таблица значений и т.п.) заранее сохраняются в макет (можно через ЗначениеВСтрокуВнутр, можно через преобразование в табличный документ или любым другим способом)
  • в начале кода теста из макета получаем исходную таблицу данных
  • выполняется основной код, получается таблица данных
  • далее обе таблицы просто сравниваются указанными утверждениями
  • все :)

Пример кода сравнения с образцом (из Пример теста СКД и отчета, сделанного на компоновке )

Код самого теста (модуль этой обработки) - приведен ниже по тексту.

Код теста

Перем КонтекстЯдра;
Перем Утверждения;
Перем ГенераторТестовыхДанных;
Перем УтвержденияПроверкаТаблиц;

Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
	КонтекстЯдра = КонтекстЯдраПараметр;
	Утверждения = КонтекстЯдра.Плагин("БазовыеУтверждения");
	ГенераторТестовыхДанных = КонтекстЯдра.Плагин("СериализаторMXL");
	УтвержденияПроверкаТаблиц = КонтекстЯдра.Плагин("УтвержденияПроверкаТаблиц");
КонецПроцедуры

Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт
	НаборТестов.Добавить("Тест_ПроверитьОтчетНаСоответствиеЭталону");
КонецПроцедуры

Процедура Тест_ПроверитьОтчетНаСоответствиеЭталону() Экспорт
	Перем Расшифровка; // сюда будет передана информация расшифровки СКД, т.к. в эталоне она тоже есть
	
	// создание тестовых данных из табличного документа
	МакетТестовыеДанные = ПолучитьМакет("ТестовыеДанные");
	ТестовыеДанные = ГенераторТестовыхДанных.СоздатьДанныеПоТабличномуДокументу(МакетТестовыеДанные);
	
	Утверждения.ПроверитьБольше(ТестовыеДанные.Количество(), 0, "Ожидали, что загрузка макета загрузит данные больше 0");
	
	// Получение эталонного отчета
	// Важно эталон получать именно так из-за плясок с кодом языка макета
	МакетЭталона = ПолучитьМакет("Эталон");
	Эталон = Новый ТабличныйДокумент;
	Эталон.Вывести(МакетЭталона);
	
	// Формирование отчета
	РезультатОтчета = Новый ТабличныйДокумент;
	Отчет = Отчеты.ТестовыйОтчетСКДДляСравнениеСЭталоном.Создать();
	Отчет.СкомпоноватьРезультат(РезультатОтчета, Расшифровка);
	
	#Если НЕ (ТолстыйКлиентОбычноеПриложение или ТолстыйКлиентУправляемоеПриложение) Тогда

		УтвержденияПроверкаТаблиц.ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям(Эталон, РезультатОтчета, "Ожидали, что эталон (слева) совпадет с результатом (справа), а они различны!");
		
	#Иначе
		// Сохранение в файлы mxl
		ИмяФайлаЭталона = ПолучитьИмяВременногоФайла("mxl");
		ИмяФайлаРезультатаОтчета = ПолучитьИмяВременногоФайла("mxl");
		Эталон.Записать(ИмяФайлаЭталона);
		РезультатОтчета.Записать(ИмяФайлаРезультатаОтчета);
			
		// Сравнение файлов
		
		// Если Истина, то будет показано окно демонстрации различий, если файлы различны
		// Использовать только для расследования ошибки, если тест падает на сравнении
		ПоказатьРазличия = Истина;
		
		// ПараметрыСравнения заполняется по необходимости. Если не заполнены, то используются значения по умолчанию платформы
		// Если не указан способ сравнения, будет попытка определить автоматически по расширению файла:
		//  mxl - ТабличныйДокумент
		//  txt,xml - ТекстовыйДокумент
		ПараметрыСравнения = Новый Структура;
		//ПараметрыСравнения.Вставить("ИгнорироватьПустоеПространство", Истина);
		//ПараметрыСравнения.Вставить("УчитыватьРазделителиСтрок", Ложь);
		//ПараметрыСравнения.Вставить("УчитыватьРегистр", Ложь);
		//ПараметрыСравнения.Вставить("СпособСравнения", СпособСравненияФайлов.ТекстовыйДокумент);
		
		Утверждения.ПроверитьРавенствоФайлов(ИмяФайлаЭталона, ИмяФайлаРезультатаОтчета,
			"Ожидали, что результат отчета соответствует эталону", ПараметрыСравнения, ПоказатьРазличия);
			
	#КонецЕсли 	
			
КонецПроцедуры

В версии 3.Х

Для тестирования данных с помощью макетов-образцов в продукте есть утверждения

  • ПроверитьРавенствоТабличныхДокументовТолькоПоЗначениям
  • ПроверитьРавенствоТаблиц

Схема тестирования остается той же

Код самого теста для версии 3.Х

Clone this wiki locally