XML тестовые сценарии / бегуны - PullRequest
1 голос
/ 03 декабря 2010

Существуют ли какие-либо фреймворки для тестирования XML, которые позволили бы мне писать сценарии для тестирования / подтверждения содержимого файла XML?

Примечание: я знаю, что такие платформы существуют как расширения для платформ тестирования языков программирования, таких как Java и .NET.

Я ищу что-то независимое от любого языка программирования.Я хотел бы написать сценарии тестирования XML в блокноте и не нужно их компилировать.(Что-то вроде DBFit, но для XML).Ниже приведен пример того, что я ищу.

Образец XML

  <parent>
          <value name ="bob"/>
  </parent>

->

Образец сценария XML-теста

assert(xpath("/parent/value/@name") == 'bob');

Ответы [ 2 ]

1 голос
/ 03 декабря 2010

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

Вот пример XSLT, который оценивает ваши критерии утверждения и, если он не проходит, использует xsl:message с @terminate='yes', чтобы остановить процесс и вывести сообщение об ошибке для вывода:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl" exclude-result-prefixes="xd" version="1.0">
    <xsl:template match="/">
        <!--Assert that /parent/value/@name == 'bob'-->
        <xsl:if test="not(/parent/value/@name='bob')">
            <!-- if it does not, then terminate the transform and fail -->
            <xsl:message terminate="yes">name must be bob</xsl:message>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>

Просто выполните XSLT для файла (ов), который вы хотите проверить.

1 голос
/ 03 декабря 2010

Schematron

Schematron

Базовая концепция Schematron отличается от других языков схемы тем, что она основана не на грамматиках, а на нахождении шаблонов деревьевв разобранном документе.Этот подход позволяет представлять много видов структур, которые неудобны и сложны в языках схем на основе грамматики.Если вы знаете XPath или язык выражений XSLT, вы можете сразу начать использовать The Schematron.

И у него есть бесплатные и доступные реализации с открытым исходным кодом.

Schematron тривиально прост в реализации поверх XSLT и в настройке.(Существуют также реализации на Python и Perl)

Schematron позволяет разрабатывать и смешивать два вида схем:

1.) Отчет элементы позволяют диагностировать, с каким языком вы имеете дело.

2.) Утверждение Элементы позволяют подтвердить, что документ соответствует определенной схеме.

Schematron основан на простом действии:

  • Сначала найдите контекстные узлы в документе (обычно элемент) на основе критериев пути XPath;
  • Затем проверьте, верны ли некоторые другие выражения XPath для каждого из этих узлов.

Пример шаблона Schematron:

<?xml version="1.0" encoding="UTF-8"?>
<sch:schema xmlns:sch=""http://purl.oclc.org/dsdl/schematron">
    <sch:title>Verify that Dad is Bob</title>
    <sch:pattern>
        <sch:rule context="/parent/value">
            <sch:assert test="@name='bob'">The/parent/value/@name must be "bob".</sch:assert>
        </sch:rule>
    </sch:pattern>
</sch:schema>
...