Конфигурации: 1C: Предприятие 8
Внешний отчет, обработка для 1С: Предприятие 8.1
Система тестирования функциональных тестов FuncTest_Для 1C v81 - версия 1.17
Основана на системе FuncTest для 1С 7.7 - http://1c.alterplast.ru/functest/functest.html
Возможности
Реализована только для 8.1
На данный момент умеет получать/сохранять различные данные, например, все или любые движения конкретного документа/справочника + работать с произвольными запросами и любыми параметрами + работа с печатными формами + работа с произвольными обработками + возможность использования юнит-тестов.
Можно тестировать как один тест из списка, так и все тесты из списка или каталога.
В дальнейшем можно сравнивать текущие ожидания из справочника/документа/запроса/печ.формы/т.д. с сохраненными ожиданиями из теста.
Есть возможность написания самостоятельных классов - произвольных расчетчиков ожиданий.
Интерфейс подобных классов описан в обработке-заготовке Классы/РасчетчикОжиданий_Базовый.epf
Также примера написания можно посмотреть в вложенной папке Классы
История изменений
1.10 - добавлена автогенерация тестов с ожиданиями для документов и автоматическое обновление ожиданий для всех тестов
1.11 - выполнен сильный рефакторинг системы
1.12 - логика тестов отделена от интерфейса, рефакторинг системы
1.13 - выделены классы тестирования и расчетчиков ожиданий, рефакторинг системы
Появилась возможность написания самостоятельных классов - произвольных расчетчиков ожиданий
1.14:
Появилась возможность получать ожидания из запросов 1С.
К базовому интерфейсу классов-расчетчиков ожиданий добавлен метод "ОбработатьНачалоВыбораОбъектаТестирования"
Исправлен баг - нельзя было сделать произвольный класс-расчетчик с произвольным объектом тестирования.
Поведение браузера тестов сделано более "вменяемым".
1.15:
Переделана структура хранения данных тестов - тест хранится в одном файле test_NNN.txt.
Работа с ожиданиями из запросов 1С сделана более стабильной.
Сильно ускорена и оптимизирована работа системы тестирования.
Исправлен различные баги в работе браузера тестов.
Приложены простые демо-тесты с простыми запросами - папка "НезависимыеТесты".
Для нормальной работы с запросами рекомендуется использовать
подсистему "Инструменты разработчика"
http://infostart.ru/projects/1274/
В этом случае появляются максимально удобные возможности
редактирования запросов и их параметров.
Если в конфигурацию включена данная подсистема, то система
тестирования автоматически начинает использовать консоль запросов из этой подсистемы.
1.16:
[+] имена используемых классов-расчетчиков ожидания хранятся в файле Классы\main.ini (кодировка Win1251)
[+] изменен/доработан интерфейс классов-расчетчиков ожиданий;
[+] для класса-расчетчика ожидания добавлена возможность программного управления работой с таблицей "
Условия теста" - начало выбора, обработка выбора;
[+] для класса-расчетчика ожидания добавлена возможность программного управления элементом управления
элементом управления значения условия тестирования;
[+] добавлена возможность вывода сообщений из теста в общий лог тестирования;
[+] добавлена спец.условие тестирования "Тест_ФлагНеУчитыватьРазноеКоличествоСтрок";
[+] доработана работа пользователя со списком тестов;
[-] если в выбранном пользователе каталоге нет тестов, не все таблицы на экране очищались;
[*] перед открытием браузера тестов выполняются проверки на существование необходимых классов;
[-] в условиях тестирования нельзя было использовать значения с типом Булево;
[+] исправлены наименования колонок списка тестов;
[*] Расчетчик-ожиданий Запрос - более точная обработка ошибок в тексте запроса;
Исправлены различные баги в работе браузера тестов.
[*] - возможно программное тестирование всех тестов, получение ожиданий для всех
тестов и распечатка данных тестов из внешнего кода.
[+] Добавлен новый вид тестирования -
получение всех движений документа на базе типового отчета ДвиженияДокумента, встроенного в конфигурацию
файл - РасчетчикОжиданий_ВсеДвиженияДокумента.epf
[+] Добавлен новый вид тестирования -
получение печатных форм различных объектов в типовых конфигурациях 1С и подобных им
Внимание: необходима доработка конфигурации, подробнее в начальных комментариях к тексту модуля
файл - РасчетчикОжиданий_Печать.epf
[+] Добавлен новый вид тестирования -
получение печатных форм из файлов-обработок *.epf аналогично типовым конфигурациям 1С и подобных им
Используется метод обработки "Печать"
файл - РасчетчикОжиданий_ВнешняяПечатнаяФорма.epf
[+] Добавлен новый вид тестирования -
получение печатных форм из файлов-обработок, хранящихся в справочнике печатных форм, в типовых конфигурациях 1С и подобных им;
Используется метод обработки "Печать"
файл - РасчетчикОжиданий_ВнешняяПечатнаяФормаИзСправочникаПечатныхФорм.epf
[+] Добавлен новый вид тестирования -
Получение ожиданий на базе произвольных файлов обработок *.epf
Может использоваться для работы с юнит-тестами - см. папку ПроизвольныеЮнитТесты
файл - РасчетчикОжиданий_ПроизвольныйТестИзФайлаОбработки.epf
[+] Добавлена возможность работы с юнит-тестами -
при использовании расчетчика РасчетчикОжиданий_ПроизвольныйТестИзФайлаОбработки.epf
необходимо использовать на базе данного файла создать свой вариант юнит-теста
[+] Рабочий пример юнит-теста -
для системы 1С:УПП получает данные из книги покупок и
дает возможность автоматически, на лету сформировать документ "Формирование книги покупок",
и проверить сохраненную книгу покупок с автоматически сформированной
1.17:
[-] при прохождении тестирования могло выдаваться исключение из-за ошибки в коде класса Тест и работа тестирования останавливалась.
[-] при получении ожиданий из печатной таблицы не учитывалась последняя строка таблицы
[+] новый метод класса Тест::ЗаполнитьРеквизитыПриемникаУсловиямиТеста(Приемник)
Дополнительные возможности
По кнопке Печать можно распечатать список тестов и т.д.
Исходная обработка - http://itland.ru/forum//index.php?showtopic=11542&view=findpost&p=71126
Автор SA_KGB - ему большое спасибо !!
Полезные ссылки по тестированию я выложил в форуме другой своей разработки
artbear Артур
18.02.2010 14:04:00
1. Для правильной работы обработчика необходима доп.настройка конфигурации -
нужно изменить метод общего модуля УниверсальныеМеханизмы :: метод НапечататьДокумент,
вставив в начало метода следующий код:
// начало метода Процедура НапечататьДокумент(......) Экспорт
// -- Артур -- 05.12.2008 - для возможности тестирования универсальной печати документов/справочников
Попытка
лПараметрСеанса_глТестированиеЗапущено = глЗначениеПеременной("глТестированиеЗапущено");
Если лПараметрСеанса_глТестированиеЗапущено <> Неопределено Тогда
Если лПараметрСеанса_глТестированиеЗапущено Тогда
глЗначениеПеременнойУстановить("глТестирование_ПоследнийПечатныйДокумент", ПечДокумент);
Возврат;
Иначе
глЗначениеПеременнойУстановить("глТестирование_ПоследнийПечатныйДокумент", Неопределено);
КонецЕсли;
КонецЕсли;
Исключение
//ОписаниеОшибки()
КонецПопытки;
// --завершение
Читать полностью
artbear Артур
13.02.2010 22:53:00
Изучал Консоль выполнения произвольных текстов модуля
обнаружил, что версию 2.0.0.18 (текущая на сегодня, 14.02.2010) довольно легко превратить в среду по созданию и тестирования юнит-тестов для 1С 8
Прокомментировал в (61)
Текущую редакцию довольно легко можно превратить в простую среду по созданию, отладке и тестированию юнит-тестов в 1С.
Принимаем следующие предположения:
1. если код/текст/юнит-тест не работает, он выбрасывает исключение
2. несколько юнит-тестов могут быть объединены в группы
при этих предположениях легко сделать исправления в модуле основной формы браузера блоков кода
и по кнопке Выполнить будут выполняться целые группы тестов.
.
Код ниже вставляем вместо процедуры КоманднаяПанельФормыВыполнить(Кнопка) в модуле основной формы
.
// Артур
Функция ВыполнитьОдинБлокКода(текстМодуля, ДанныеДляКода)
//Процедура КоманднаяПанельФормыВыполнить(Кнопка)
// Поместим параметры, алгоритмы и запросы в структуры,
// чтобы к ним можно было обратиться, например Алгоритмы.ОбработкаСправочника
Параметры = Новый Структура;
Для каждого ПараметрСтрока Из ДанныеДляКода.ТаблицаПараметров Цикл
Параметры.Вставить(ПараметрСтрока.Параметр, ПараметрСтрока.ЗначениеПараметра);
КонецЦикла;
Алгоритмы = Новый Структура;
Для каждого АлгоритмСтрока Из ДанныеДляКода.ТаблицаАлгоритмов Цикл
Алгоритмы.Вставить(АлгоритмСтрока.АлгоритмИмя, АлгоритмСтрока.Алгоритм);
КонецЦикла;
Запросы = Новый Структура;
Для каждого ЗапросСтрока Из ДанныеДляКода.ТаблицаЗапросов Цикл
Запросы.Вставить(ЗапросСтрока.ЗапросИмя, Новый Запрос(ЗапросСтрока.Запрос));
КонецЦикла;
// Выполнение текста
ТаблицаРезультат.Очистить();
Если НЕ ДанныеДляКода.ЭтоГруппа Тогда
Выполнить(текстМодуля); //Выполнить(ЭлементыФормы.ТекстМодуля.ПолучитьТекст());
Возврат Истина;
Иначе
Попытка
Выполнить(текстМодуля);
Возврат Истина;
Исключение
Сообщить("Код "+ДанныеДляКода.ТекущаяСтрока.ИмяТекста + " неверно отработал - <"+ОписаниеОшибки()+">");
Возврат Ложь;
КонецПопытки;
КонецЕсли;
КонецФункции
// Артур
Процедура КоманднаяПанельФормыВыполнить(Кнопка)
ДанныеДляКода = Новый Структура;
текущаяСтрока = ЭлементыФормы.ДеревоТекстов.ТекущаяСтрока;
подчиненныеСтроки = текущаяСтрока.Строки;
количествоПодчиненныхСтрок = подчиненныеСтроки.Количество();
этоГруппаБлоковКода = количествоПодчиненныхСтрок <> 0;
Если НЕ этоГруппаБлоковКода Тогда
код = ЭлементыФормы.ТекстМодуля.ПолучитьТекст();
ДанныеДляКода.Вставить("ЭтоГруппа", Ложь);
ДанныеДляКода.Вставить("ТаблицаПараметров", ТаблицаПараметров);
ДанныеДляКода.Вставить("ТаблицаАлгоритмов", ТаблицаАлгоритмов);
ДанныеДляКода.Вставить("ТаблицаЗапросов", ТаблицаЗапросов);
ДанныеДляКода.Вставить("ТекущаяСтрока", текущаяСтрока);
ВыполнитьОдинБлокКода(код, ДанныеДляКода);
Иначе
количествоПлохихТестов = 0;
Для каждого строка Из подчиненныеСтроки Цикл
код = строка.ТекстМодуля;
ДанныеДляКода.Вставить("ЭтоГруппа", Истина);
ДанныеДляКода.Вставить("ТаблицаПараметров", строка.Параметры);
ДанныеДляКода.Вставить("ТаблицаАлгоритмов", строка.ТаблицаАлгоритмов);
ДанныеДляКода.Вставить("ТаблицаЗапросов", строка.ТаблицаЗапросов);
ДанныеДляКода.Вставить("ТекущаяСтрока", строка);
успешно = ВыполнитьОдинБлокКода(код, ДанныеДляКода);
Если НЕ успешно Тогда
количествоПлохихТестов = количествоПлохихТестов + 1;
КонецЕсли;
КонецЦикла;
Если количествоПлохихТестов = 0 Тогда
Сообщить("ОК");
Иначе
Сообщить("Не выполнено <"+количествоПлохихТестов+"> тестов/блоков кода из <"+количествоПодчиненныхСтрок+">");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
// завершение
.
ИМХО очень удобно использовать для тестирования.
ЗЫ в данной редакции кода возможна редакция только на 2-х уровнях иерархии - код и группа кодов. но доработать на любую иерархию несложно.
Читать полностью
Темы |
Ответы |
Обновление |
|
|
|
0 |
|
|
|
Как пользователь может указать каталог, где хранятся тесты? ·
автор: fez
|
0 |
|
|
|
Делимся опытом :) ·
автор: Anything
|
14 |
|
|
|
|
3 |
|
|
|
Публикация ссылается на:
На публикацию ссылаются:
Оценка сообщества