Interested Article - TemplateTester

Документация

TemplateTester — шаблон для тестирования других шаблонов. Ограниченно поддерживает вывод диффов, а также Lua. Модуль раскрывает тестируемые случаи использования шаблонов, а затем сравнивает с ожидаемым викитекстом или с ожидаемым паттерном.

Первым аргументом необходимо задать путь к модулю, в котором находятся наборы тестов.

Если тесты пройдены, то по умолчанию шаблон выведет лишь надпись о том, что тесты пройдены, со ссылкой на модуль с тестами. Информация о каждом из тестов в этом случае не отображается.

Формат

Общий формат:

{{TemplateTester|Модуль:Название модуля/testcases
 |только проваленные =
}}

Примеры использования

Отображать только проваленные тесты для модуля Модуль:CiteGost :

{{TemplateTester|Модуль:CiteGost/testcases
 |только проваленные = 1
}}

Отображать результаты тестирования для модуля Модуль:CiteGost :

{{TemplateTester|Модуль:CiteGost/testcases}}

Пример отображения тестов при наличии неудачных (демо):

{{TemplateTester|Модуль:TemplateTester/demo-failed}}
Пройдено тестов : 4 из 10. Неудачных: 6 .
Набор тестов 1 (1/3)
Тест Ожидается Фактически Разница
Тест 1 (с ошибкой)
Проба пера
Проба ошибки пера Проба пера
< ошибки
>
Тест 2
Проба    пера 1234567890
Проба%s+пера 1234567890 Проба пера 1234567890
Тест 3 (с ошибкой)
Тест с двумя различиями, содержащимися в нём.
Тест с 2 различиями, которые содержатся в нём. Тест с двумя различиями, содержащимися в нём.
< 2
> двумя
< которые содержатся
> содержащимися
< содержа т ся
> содержа щими ся
Набор тестов 2 (0/3)
Тест Ожидается Фактически Разница
Тест 4 (с ошибкой)
Проба пера
Проба ошибка пера Проба пера
< ошибка
>
Тест 5 (с ошибкой)
<span>Набор слов, но со знаком в конце.</span>
%w+ Набор слов, но со знаком в конце.
< %w+
> Набор слов, но со знаком в конце.
Не задан параметр input Не задан параметр output или pattern nil
Набор тестов 3 (все успешные) (2/2)
Тест Ожидается Фактически Разница
Тест 6
Некоторый текст и Ok
Некоторый текст и [a-zA-Z][a-zA-Z] Некоторый текст и Ok
Тест 7
Некоторый текст и Ok
Некоторый текст и Ok Некоторый текст и Ok
Набор тестов 4 (1/2)
Тест Ожидается Фактически Разница
Тест 8
Некоторый текст и Ok
Некоторый текст и [a-zA-Z][a-zA-Z] Некоторый текст и Ok
Тест 9 (с ошибкой)
Некоторый текст и Ok
Ok Некоторый текст и Ok
<
> Некоторый текст и

Пример отображения только неудачных тестов (демо):

{{TemplateTester|Модуль:TemplateTester/demo-failed|только проваленные=1}}
Пройдено тестов : 4 из 10. Неудачных: 6 .
Набор тестов 1 (1/3)
Тест Ожидается Фактически Разница
Тест 1 (с ошибкой)
Проба пера
Проба ошибки пера Проба пера
< ошибки
>
Тест 3 (с ошибкой)
Тест с двумя различиями, содержащимися в нём.
Тест с 2 различиями, которые содержатся в нём. Тест с двумя различиями, содержащимися в нём.
< 2
> двумя
< которые содержатся
> содержащимися
< содержа т ся
> содержа щими ся
Набор тестов 2 (0/3)
Тест Ожидается Фактически Разница
Тест 4 (с ошибкой)
Проба пера
Проба ошибка пера Проба пера
< ошибка
>
Тест 5 (с ошибкой)
<span>Набор слов, но со знаком в конце.</span>
%w+ Набор слов, но со знаком в конце.
< %w+
> Набор слов, но со знаком в конце.
Не задан параметр input Не задан параметр output или pattern nil
Набор тестов 4 (1/2)
Тест Ожидается Фактически Разница
Тест 9 (с ошибкой)
Некоторый текст и Ok
Ok Некоторый текст и Ok
<
> Некоторый текст и

Формат модуля с тестами

Модуль с тестами должен возвращать таблицу-массив с наборами тестов. Каждый набор тоже представляет собой таблицу-массив, каждый элемент которого является параметрами отдельно взятого теста.

Каждый набор описывается следующими полями:

  • name — название набора тестов.
  • tests — массив тестов, принадлежащих набору.

Каждый тест описывается следующими полями:

  • comment — описание теста или комментарий к нему.
  • input — тестируемая строка.
  • output — ожидаемый Викитекст на выходе, который будет получен раскрытием поля input (игнорируется, если задан pattern ).
  • pattern — Lua, которому должен соответствовать раскрытый input .
local suite1 = {
	{
		comment = 'Описание теста 1',
		input = [[{{Вызова шаблона|Параметр=значение 1}}]],
        -- С указанием результирующего текста:
		output = '<span>Раскрытый шаблон 1</span>',
	},
	{
		comment = 'Описание теста 2',
		input = [[{{Вызова шаблона|Параметр=значение 2}}]],
        -- С указанием паттерна:
		pattern = '<span>%w</span>',
	},
    -- ...
}

local suite2 = {
	{
		comment = 'Описание теста 3',
		input = [[{{Вызова шаблона|Параметр=значение 3}}]],
		output = '<span>Раскрытый шаблон 3</span>',
	},
	{
		comment = 'Описание теста 4',
		input = [[{{Вызова шаблона|Параметр=значение 4}}]],
		output = '<span>Раскрытый шаблон 4</span>',
	},
    -- ...
}

-- ...

local suites = {
	{
		name = 'Набор тестов 1',
		tests = suite1,
	},
	{
		name = 'Набор тестов 2',
		tests = suite2,
	},
    -- ...
}

return suites

Параметры

В шаблоне указывается путь к модулю с наборами тестов. Дополнительно можно указать параметр, скрывающий успешные тесты.

Параметры шаблона [ ]

Параметр Описание Тип Статус
Путь к модулю 1

Путь к модулю с наборами тестов.

Строковый (без форматирования) обязательный
Только проваленные только проваленные

В таблице тестов показывать только проваленные тесты, успешные тесты отображаться не должны.

Строковый (без форматирования) предложенный
Источник —

Same as TemplateTester