stringtranslate.com

Википедия:Шаблоны песочницы и тестовые случаи

Шаблоны — очень мощная функция программного обеспечения MediaWiki , используемого для Wikipedia , но ошибки могут быть легко допущены даже опытными пользователями. Поэтому редактирование сложных шаблонов должно осуществляться в песочницах и сопровождаться тестовыми примерами для предотвращения ошибок. Временные песочницы X1 - X20 или Template Sandbox могут быть полезными местами для новых экспериментов или для пользователей, впервые занимающихся разработкой шаблонов.

Для разработки совершенно новых шаблонов подходят пользовательские песочницы.

Именование подстраниц песочницы и тестовых случаев

Большинство защищенных шаблонов уже имеют подстраницу sandbox и подстраницу testcases. Имена этих страниц являются стандартными. Внизу каждой страницы шаблона находятся ссылки для создания/редактирования страниц sandbox и testcases шаблона.

Например, вот подстраницы для {{ FlagIOCmedalist }} :

Для каких шаблонов следует использовать песочницу?

Настоятельно рекомендуется применять шаблон тестового случая к шаблонам, использующим ParserFunctions, которые могут генерировать совершенно разные выходные данные, например, принимающие много параметров или имеющие много ветвей оператора #switch.

Для навигационных блоков с практически идентичными результатами на каждой странице трансляции выгода может не перевесить время и усилия по созданию страницы-песочницы, но если есть сомнения, поместите ее в песочницу. Любой шаблон, помеченный как Шаблон с высоким риском, всегда следует тестировать перед внесением изменений. С другими страницами вам все равно следует проверить, какие страницы используют шаблон (через ссылку «Что здесь ссылается» в разделе «Инструменты» на панели ссылок в левой части экрана).

Как создать подстраницы /sandbox и /testcases

  1. Предположим, ваш шаблон называется Template:X. Создайте подстраницу с именем Template:X/sandbox. Если основной шаблон использует шаблон {{ documentation }} , вы можете сделать это по ссылке внизу синего поля документации на главной странице шаблона. Или вы можете ввести его в поле поиска или непосредственно в адресную строку вашего браузера. Обратите внимание, что "/sandbox" полностью в нижнем регистре.
  2. Скопируйте все содержимое основного шаблона, включая <noinclude>теги и шаблон {{ documentation }} , если он присутствует, вставьте его в окно редактирования подстраницы /sandbox и сохраните страницу. Ваше резюме редактирования должно быть примерно таким create sandbox version of [[Template:X]]: .
  3. Создайте еще одну подстраницу с именем Template:X/testcases. Эта страница связана с нижней частью синего поля документации, только если она действительно существует, поэтому для ее создания вам нужно будет создать ее, введя имя страницы в поле поиска или в адресную строку браузера. Еще раз обратите внимание, что "/testcases" — все строчные буквы и все одно слово.
  4. Поместите шаблон {{ testcases notic }} в верхнюю часть страницы, добавьте несколько тестовых случаев (см. ниже) и сохраните страницу.
  5. Добавьте свой экспериментальный код в Template:X/sandbox. Чтобы протестировать свой код, сохраните страницу и перейдите на страницу /testcases. Часто вам нужно будет очистить страницу /testcases, чтобы увидеть обновленные результаты; в шаблоне {{ testcases notic }} есть ссылка, позволяющая это сделать . После очистки страницы сравните результаты для основного шаблона с результатами из песочницы, и если все выглядит нормально, вы можете обновить основной шаблон. Однако будьте осторожны с пропущенными тестовыми случаями и кодом, который можно протестировать только в определенных пространствах имен или на определенных страницах.

Как обновить существующие подстраницы /sandbox и /testcases

Чтобы внести изменения в шаблон, в котором уже есть подстраницы /sandbox и /testcases, процесс аналогичен описанному выше.

  1. В /sandbox может отсутствовать последняя версия кода шаблона, поэтому перед внесением изменений вам необходимо синхронизировать его с основным шаблоном. Скопируйте все содержимое основного шаблона на подстраницу /sandbox и сохраните страницу. Краткое изложение вашего редактирования должно быть чем-то вроде «синхронизировать с основным шаблоном» или просто «синхронизировать».
  2. Получайте удовольствие от редактирования песочницы. Когда у вас есть код, который вы хотите протестировать, сохраните страницу.
  3. Если вы добавили какие-либо новые функции или изменили какие-либо параметры, вам следует добавить новые тестовые случаи на подстраницу /testcases, чтобы их можно было протестировать. Также имейте в виду, что существующие тестовые случаи могут быть неполными. Можно переписать тестовые случаи, если они не подходят для того, чего вы пытаетесь достичь, но также подумайте о редакторах, которые могут использовать тестовые случаи после вас.
  4. Очистите страницу /testcases, чтобы обновить результаты.
  5. Проверьте, что результаты тестового случая верны. Если все выглядит хорошо, скопируйте код из песочницы в основной шаблон.

Добавление тестовых случаев

На странице /testcases должен быть один тестовый случай для каждого отдельного поведения вашего шаблона. Например, если ваш шаблон выводит сообщение-баннер, и если параметр |italic=yesделает это сообщение курсивом, вы должны добавить один тестовый случай для обычного сообщения и один для курсивного сообщения. Если у этого шаблона есть другой параметр, |date=, где пользователь вставляет дату, то для этого должен быть третий тестовый случай. Вы должны попытаться быть тщательным и создать случаи для всех способов, которыми пользователи могут использовать ваш шаблон; однако часто непрактично добавлять тестовые случаи для каждой отдельной комбинации параметров, поэтому вы должны выбирать наиболее релевантные из них с умом.

Существует довольно много различных стилей тестовых случаев, которые вы можете использовать. Какой из них вы выберете, зависит от характера шаблона, над которым вы работаете. Например, для короткого вывода шаблона, который умещается на одной строке, может быть полезно поместить тестовые случаи в wikitable, а для длинных и тонких шаблонов, таких как инфобоксы, часто лучше всего отображать их рядом, используя {{ testcase table }} .

Ручное форматирование

Форматирование вручную дает вам большую гибкость, но необходимо следить за тем, чтобы все параметры шаблона были введены правильно. Ошибку в одном из тестовых случаев часто сложнее найти, чем ошибку в самом шаблоне.

Базовый формат

Этот формат хорошо подходит для шаблонов баннеров и для длинного текста, например, цитат. Обратите внимание, что вы можете форматировать эти виды тестов автоматически, используя Template:Test case и другие подобные шаблоны.

== Описательное название == * <code><nowiki>{{ шаблон | параметр1 = значение1 | параметр2 = значение2 }}</nowiki></code> '''Основной''' {{ шаблон | параметр1 = значение1 | параметр2 = значение2 }} '''Песочница''' {{ шаблон /sandbox| параметр1 = значение1 | параметр2 = значение2 }}

Каждое значение template , param1 , value1 и т. д. должно быть идентичным.

Для шаблонов, использующих атрибут CSS «float», вам необходимо использовать шаблон {{ clear }}, чтобы предотвратить слипание результатов:

== Описательное название == * <code><nowiki>{{ шаблон | параметр1 = значение1 | параметр2 = значение2 }}</nowiki></code> '''Основной''' {{ шаблон | параметр1 = значение1 | параметр2 = значение2 }} {{прозрачный}} '''Песочница''' {{ шаблон /sandbox| параметр1 = значение1 | параметр2 = значение2 }} {{прозрачный}}

Викитаблица

Использование wikitable для форматирования тестовых случаев часто полезно для шаблонов с короткими выводами, которые необходимо правильно выстроить.

Начните таблицу следующим образом:

{| класс="wikitable"|-! Код! Основной! Песочница<!-- Каждый новый тестовый случай можно добавить следующим образом: -->|-| <code><nowiki> {{ шаблон | параметр1 = значение1 | параметр2 = значение2 }} </nowiki></code>
| {{ шаблон | параметр1 = значение1 | параметр2 = значение2 }}| {{ шаблон /sandbox| параметр1 = значение1 | параметр2 = значение2 }}<!-- Закончите таблицу следующим образом: -->|}

Автоматическое форматирование

Существуют различные шаблоны, которые помогают вам автоматически форматировать тестовые случаи. С помощью этих шаблонов параметры и значения вводятся только один раз, но все равно проверяются как для основного шаблона, так и для шаблонов песочницы. Это позволяет избежать проблемы ошибок в параметрах тестовых случаев и упрощает поддержку страниц тестовых случаев. Эти шаблоны включают:

Обратите внимание, что все эти шаблоны могут создавать сворачиваемые тестовые случаи, но у Template:Collapsible test case эта функция включена по умолчанию. Подробную документацию см. на отдельных страницах шаблонов.

Тесты, которые нельзя выполнить на страницах /testcases

Некоторые функции шаблона не могут быть протестированы на страницах /testcases. Например, шаблон может выводить только определенный текст, находясь в основном пространстве имен, или он может выводить разные вещи, когда он используется на базовой странице и когда он используется на подстранице. Для таких тестов вы можете использовать функцию «Предварительный просмотр страницы с этим шаблоном», которую вы можете видеть под окном редактирования на страницах шаблона. Чтобы сделать эту функцию еще более мощной, вы можете установить User:Jackmcbarn/advancedtemplatesandbox.js , что делает ее пригодной для использования в любом пространстве имен и позволяет вам указывать заголовок шаблона, а также страницу для его предварительного просмотра. Это означает, что вы можете редактировать шаблон песочницы, но просматривать страницы так, как если бы вы на самом деле редактировали основной шаблон.

Если вы думаете, что какие-либо тесты не могут быть выполнены на странице /testcases, может быть полезно оставить заметку в верхней части страницы /testcases с указанием того, что еще требует тестирования, чтобы будущие редакторы этого шаблона также знали об этом.

Примеры

Базовый формат
Шаблон:Цитата , Шаблон:Цитата/песочница и Шаблон:Цитата/тестовые случаи
Викитаблица
Шаблон:Diff , Шаблон:Diff/sandbox и Шаблон:Diff/testcases
Таблица тестовых случаев
Шаблон:Infobox расчет , Шаблон:Infobox расчет/песочница и Шаблон:Infobox расчет/тестовые случаи

Смотрите также