XML测试脚本/运行器

时间:2010-12-02 21:54:57

标签: xml testing qa

是否有任何xml测试框架允许我编写用于测试/断言xml文件内容的脚本?

注意:我知道这些框架作为Java和.NET等编程语言测试框架的扩展而存在。

我所期待的是拥有独立于任何编程语言的东西。我想在记事本中编写xml测试脚本,而不必编译它们。 (像DBFit,但对于XML)。请参阅下面的示例,了解我正在寻找的内容。

示例XML

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

- &GT;

示例XML测试脚本

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

2 个答案:

答案 0 :(得分:1)

Schematron

Schematron

  

Schematron基本不同   来自其他模式语言的概念   它不是基于语法而是基于语法   在解析中找到树模式   文献。这种方法允许很多   要表示的各种结构   这是不方便和困难的   在基于语法的模式语言中。如果   你知道XPath或XSLT表达式   语言,你可以开始使用了   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>

答案 1 :(得分:1)

您可以使用XSLT轻松地推出自己的解决方案。

下面是一个评估断言条件的XSLT示例,如果它没有通过,则使用带有@terminate='yes'的{​​{3}}来暂停进程并将错误消息回显到std out:

<?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。